From dcc027082e5edd06cfc8d6f4b08d2f70e5a973cc Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 4 Apr 2016 23:28:28 +0100 Subject: [PATCH] Fixing horrible intialization of segment class by poking before calling seginit. Copied from Perforce Change: 190694 ServerID: perforce.ravenbrook.com --- mps/code/seg.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mps/code/seg.c b/mps/code/seg.c index 97b1da659a8..49218c0d1a7 100644 --- a/mps/code/seg.c +++ b/mps/code/seg.c @@ -33,8 +33,8 @@ SRCID(seg, "$Id$"); static void SegFinish(Seg seg); -static Res SegInit(Seg seg, Pool pool, Addr base, Size size, - ArgList args); +static Res SegInit(Seg seg, SegClass class, Pool pool, + Addr base, Size size, ArgList args); /* Generic interface support */ @@ -72,8 +72,7 @@ Res SegAlloc(Seg *segReturn, SegClass class, LocusPref pref, goto failControl; seg = p; - seg->class = class; - res = SegInit(seg, pool, base, size, args); + res = SegInit(seg, class, pool, base, size, args); if (res != ResOK) goto failInit; @@ -121,12 +120,11 @@ void SegFree(Seg seg) /* SegInit -- initialize a segment */ -static Res SegInit(Seg seg, Pool pool, Addr base, Size size, ArgList args) +static Res SegInit(Seg seg, SegClass class, Pool pool, Addr base, Size size, ArgList args) { Tract tract; Addr addr, limit; Arena arena; - SegClass class; Res res; AVER(seg != NULL); @@ -134,9 +132,9 @@ static Res SegInit(Seg seg, Pool pool, Addr base, Size size, ArgList args) arena = PoolArena(pool); AVER(AddrIsArenaGrain(base, arena)); AVER(SizeIsArenaGrains(size, arena)); - class = seg->class; AVERT(SegClass, class); + seg->class = class; limit = AddrAdd(base, size); seg->limit = limit; seg->rankSet = RankSetEMPTY;