From: Nicholas Nethercote Date: Mon, 23 Aug 2004 09:28:37 +0000 (+0000) Subject: Fix bug, courtesy of Paul Mackerras: when giving find_map_space an address X-Git-Tag: svn/VALGRIND_2_2_0~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3fb236f86da6dec47d0027169bcbe0be48940164;p=thirdparty%2Fvalgrind.git Fix bug, courtesy of Paul Mackerras: when giving find_map_space an address lower than that of any existing segment, it got it wrong due to the confusing SkipList API. I wonder how many more bugs like that there are...? git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2596 --- diff --git a/coregrind/vg_memory.c b/coregrind/vg_memory.c index e21fbfc144..483073a22f 100644 --- a/coregrind/vg_memory.c +++ b/coregrind/vg_memory.c @@ -514,7 +514,11 @@ Addr VG_(find_map_space)(Addr addr, UInt len, Bool for_client) VG_(printf)("find_map_space: ret starts as %p-%p client=%d\n", ret, ret+len, for_client); - for(s = VG_(SkipList_Find)(&sk_segments, &ret); + s = VG_(SkipList_Find)(&sk_segments, &ret); + if (s == NULL) + s = VG_(SkipNode_First)(&sk_segments); + + for( ; s != NULL && s->addr < (ret+len); s = VG_(SkipNode_Next)(&sk_segments, s)) {