]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
drd, free() intercept: Swap freeing and cleaning memory.
authorBart Van Assche <bvanassche@acm.org>
Mon, 2 Apr 2012 14:36:22 +0000 (14:36 +0000)
committerBart Van Assche <bvanassche@acm.org>
Mon, 2 Apr 2012 14:36:22 +0000 (14:36 +0000)
Note: since the big lock is held while the malloc() and free() intercepts are
running, and since mmap() is treated by Valgrind as a non-blocking system call,
this code change is not expected to result in a behavior change of drd.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12478

drd/drd_malloc_wrappers.c

index 6eaa6746b8ba2c79528e670e92b2907ec74cef0b..92e14d7e1f8c2be6e9fc43cb04251bfe9fc28ff4 100644 (file)
@@ -131,10 +131,10 @@ Bool DRD_(freelike_block)(const ThreadId tid, const Addr p, const Bool dealloc)
    if (mc)
    {
       tl_assert(p == mc->data);
-      if (dealloc)
-        VG_(cli_free)((void*)p);
       if (mc->size > 0)
          s_stop_using_mem_callback(mc->data, mc->size);
+      if (dealloc)
+        VG_(cli_free)((void*)p);
       VG_(HT_remove)(s_malloc_list, (UWord)p);
       VG_(free)(mc);
       return True;