From ef0dc0220a806fe6e1198ee2e543d582e45cdafd Mon Sep 17 00:00:00 2001 From: Pekka Pirinen Date: Fri, 12 Feb 1999 20:38:11 +0000 Subject: [PATCH] Fix seg free with buffer (change.epcore.chub.160193) Copied from Perforce Change: 20557 ServerID: perforce.ravenbrook.com --- mps/src/poolmvff.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mps/src/poolmvff.c b/mps/src/poolmvff.c index e7341cd18ff..70e9c45553f 100644 --- a/mps/src/poolmvff.c +++ b/mps/src/poolmvff.c @@ -1,6 +1,6 @@ /* impl.c.poolmvff: First Fit Manual Variable Pool * - * $HopeName: MMsrc!poolmvff.c(trunk.14) $ + * $HopeName: MMsrc!poolmvff.c(trunk.15) $ * Copyright (C) 1998, 1999 Harlequin Group plc. All rights reserved. * * .purpose: This is a pool class for manually managed objects of @@ -24,7 +24,7 @@ #include "cbs.h" #include "mpm.h" -SRCID(poolmvff, "$HopeName: MMsrc!poolmvff.c(trunk.14) $"); +SRCID(poolmvff, "$HopeName: MMsrc!poolmvff.c(trunk.15) $"); /* Would go in poolmvff.h if the class had any MPS-internal clients. */ @@ -148,6 +148,8 @@ static void MVFFFreeSegs(MVFF mvff, Addr base, Addr limit) AVER(res == ResOK); mvff->free -= AddrOffset(segBase, segLimit); mvff->total -= AddrOffset(segBase, segLimit); + if(SegBuffer(seg) != NULL) + BufferDetach(SegBuffer(seg), MVFFPool(mvff)); SegFree(seg); } @@ -171,6 +173,8 @@ static void MVFFFreeSegs(MVFF mvff, Addr base, Addr limit) AVER(res == ResOK); mvff->free -= AddrOffset(base, limit); mvff->total -= AddrOffset(segBase, segLimit); + if(SegBuffer(seg) != NULL) + BufferDetach(SegBuffer(seg), MVFFPool(mvff)); SegFree(seg); } }