ntdll: Avoid reporting a freed block twice to Valgrind.
authorAlexandre Julliard <julliard@winehq.org>
Mon, 1 Feb 2010 11:35:32 +0000 (12:35 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 1 Feb 2010 11:35:32 +0000 (12:35 +0100)
dlls/ntdll/heap.c

index 5e57fd0c9fe18fe49fc741db622f6a58e20bcc7f..4c7318444d8b2e7fd56ddbabc39133b468eeb9bb 100644 (file)
@@ -281,9 +281,8 @@ static void subheap_notify_free_all(SUBHEAP const *subheap)
         else
         {
             ARENA_INUSE const *pArena = (ARENA_INUSE const *)ptr;
-            if (pArena->magic != ARENA_INUSE_MAGIC && pArena->magic != ARENA_PENDING_MAGIC)
-                ERR("bad inuse_magic @%p\n", pArena);
-            notify_free(pArena + 1);
+            if (pArena->magic == ARENA_INUSE_MAGIC) notify_free(pArena + 1);
+            else if (pArena->magic != ARENA_PENDING_MAGIC) ERR("bad inuse_magic @%p\n", pArena);
             ptr += sizeof(*pArena) + (pArena->size & ARENA_SIZE_MASK);
         }
     }