From e2f8cc1393c7db4e4362185ab8721e51ad0ee607 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Wed, 28 Sep 2005 20:05:31 +0000 Subject: [PATCH] Fix subtle bug in ML_(generic_POST_sys_shmdt) caused by new aspacem. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4814 --- coregrind/m_syswrap/syswrap-generic.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 0816e50163..94de9090c1 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -1627,14 +1627,15 @@ ML_(generic_POST_sys_shmdt) ( ThreadId tid, UWord res, UWord arg0 ) { NSegment* s = VG_(am_find_nsegment)(arg0); - if (s != NULL /* && (s->flags & SF_SHM) */ - /* && Implied by defn of am_find_nsegment: - VG_(seg_contains)(s, arg0, 1) */) { - Bool d = VG_(am_notify_munmap)(s->start, s->end+1 - s->start); - VG_TRACK( die_mem_munmap, s->start, s->end+1 - s->start ); + if (s != NULL) { + Addr s_start = s->start; + SizeT s_len = s->end+1 - s->start; + Bool d = VG_(am_notify_munmap)(s_start, s_len); + s = NULL; /* s is now invalid */ + VG_TRACK( die_mem_munmap, s_start, s_len ); if (d) - VG_(discard_translations)( (Addr64)(s->start), - (ULong)(s->end+1 - s->start), + VG_(discard_translations)( (Addr64)s_start, + (ULong)s_len, "ML_(generic_POST_sys_shmdt)" ); } } -- 2.47.3