mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-24 07:41:54 -07:00
Bug fix. nonsensical case in cbsfindlargest when size is passed as zero.
Added RangeCopy. Copied from Perforce Change: 184496 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
f16d920a66
commit
392f089a2c
3 changed files with 17 additions and 3 deletions
|
|
@ -764,7 +764,7 @@ static void cbsFindDeleteRange(Range rangeReturn, Range oldRangeReturn,
|
|||
need to allocate a new block. */
|
||||
AVER(res == ResOK);
|
||||
} else
|
||||
mps_lib_memcpy(oldRangeReturn, rangeReturn, sizeof(RangeStruct));
|
||||
RangeCopy(oldRangeReturn, rangeReturn);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -873,8 +873,13 @@ Bool CBSFindLargest(Range rangeReturn, Range oldRangeReturn,
|
|||
AVER(CBSBlockSize(block) >= maxSize);
|
||||
RangeInit(&range, CBSBlockBase(block), CBSBlockLimit(block));
|
||||
AVER(RangeSize(&range) >= maxSize);
|
||||
cbsFindDeleteRange(rangeReturn, oldRangeReturn, cbs, &range,
|
||||
size, findDelete);
|
||||
if (size > 0)
|
||||
cbsFindDeleteRange(rangeReturn, oldRangeReturn, cbs, &range,
|
||||
size, findDelete);
|
||||
else {
|
||||
RangeCopy(rangeReturn, &range); /* FIXME: sense? */
|
||||
RangeCopy(oldRangeReturn, &range);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,14 @@ void RangeFinish(Range range)
|
|||
range->base = range->limit = NULL;
|
||||
}
|
||||
|
||||
void RangeCopy(Range toRange, Range fromRange)
|
||||
{
|
||||
AVERT(Range, fromRange);
|
||||
toRange->base = fromRange->base;
|
||||
toRange->limit = fromRange->limit;
|
||||
toRange->sig = RangeSig;
|
||||
}
|
||||
|
||||
Res RangeDescribe(Range range, mps_lib_FILE *stream)
|
||||
{
|
||||
Res res;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ typedef struct RangeStruct *Range;
|
|||
|
||||
extern void RangeInit(Range range, Addr base, Addr limit);
|
||||
extern void RangeFinish(Range range);
|
||||
extern void RangeCopy(Range toRange, Range fromRange);
|
||||
extern Res RangeDescribe(Range range, mps_lib_FILE *stream);
|
||||
extern Bool RangeCheck(Range range);
|
||||
extern Bool RangeIsAligned(Range range, Align align);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue