1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-18 08:51:45 -08:00

Peek/poke should not assume addr is in a seg

Copied from Perforce
 Change: 18767
 ServerID: perforce.ravenbrook.com
This commit is contained in:
David Jones 1997-09-19 11:55:16 +01:00
parent 0cd75c1021
commit 4a02272f90

View file

@ -1,6 +1,6 @@
/* impl.c.arena: ARENA IMPLEMENTATION
*
* $HopeName: MMsrc!arena.c(trunk.7) $
* $HopeName: MMsrc!arena.c(trunk.8) $
* Copyright (C) 1997 The Harlequin Group Limited. All rights reserved.
*
* .readership: Any MPS developer
@ -40,7 +40,7 @@
/* finalization */
#include "poolmrg.h"
SRCID(arena, "$HopeName: MMsrc!arena.c(trunk.7) $");
SRCID(arena, "$HopeName: MMsrc!arena.c(trunk.8) $");
/* All static data objects are declared here. See .static */
@ -1107,8 +1107,13 @@ Word ArenaPeek(Arena arena, Addr addr)
AVERT(Arena, arena);
b = SegOfAddr(&seg, arena, addr);
AVER(b);
return ArenaPeekSeg(arena, seg, addr);
if(b) {
return ArenaPeekSeg(arena, seg, addr);
} else {
Word w;
w = *(Word *)addr;
return w;
}
}
Word ArenaPeekSeg(Arena arena, Seg seg, Addr addr)
@ -1136,8 +1141,11 @@ void ArenaPoke(Arena arena, Addr addr, Word word)
/* can't check word, will check addr shortly */
b = SegOfAddr(&seg, arena, addr);
AVER(b);
ArenaPokeSeg(arena, seg, addr, word);
if(b) {
ArenaPokeSeg(arena, seg, addr, word);
} else {
*(Word *)addr = word;
}
}
void ArenaPokeSeg(Arena arena, Seg seg, Addr addr, Word word)