From 7dbf5d4ce5795ec4d7638efff2d06f7a3fc8fc80 Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Thu, 1 May 2008 15:22:01 +0100 Subject: [PATCH] Mps br/vmarenagrow: mps_arena_vm_growth should give MPS_RES_PARAM is desired < minimum Copied from Perforce Change: 164898 ServerID: perforce.ravenbrook.com --- mps/code/amcss.c | 8 +++++++- mps/code/arenavm.c | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mps/code/amcss.c b/mps/code/amcss.c index f0c24868b32..4de5f143dc1 100644 --- a/mps/code/amcss.c +++ b/mps/code/amcss.c @@ -295,8 +295,14 @@ int main(int argc, char **argv) randomize(argc, argv); /* /4 => too-small arena, to test arena growth */ - die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE/4), + die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE/2), "arena_create"); + { + mps_res_t res; + /* May not desire an increment smaller than the minimum! */ + res = mps_arena_vm_growth(arena, 16 * 0x1000, 17 * 0x1000); + cdie(res == MPS_RES_PARAM, "mps_arena_vm_growth should give MPS_RES_PARAM"); + } die(mps_arena_vm_growth(arena, 16 * 0x1000, 0), "arena_vm_growth"); diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 3c90ad9863b..67e34d1bb2a 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -1718,6 +1718,12 @@ mps_res_t mps_arena_vm_growth(mps_arena_t mps_arena, vmArena = Arena2VMArena(arena); AVERT(VMArena, vmArena); + if(desired < minimum) { + /* May not desire an increment smaller than the minimum! */ + ArenaLeave(arena); + return MPS_RES_PARAM; + } + vmArena->extendBy = desired; vmArena->extendMin = minimum;