diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c index 3cd59f70049..2b87e10ad6f 100644 --- a/dlls/ntdll/heap.c +++ b/dlls/ntdll/heap.c @@ -1280,8 +1280,10 @@ BOOLEAN WINAPI RtlFreeHeap( HANDLE heap, ULONG flags, PVOID ptr ) flags |= heapPtr->flags; if (!(flags & HEAP_NO_SERIALIZE)) RtlEnterCriticalSection( &heapPtr->critSection ); - /* Some sanity checks */ + /* Inform valgrind we are trying to free memory, so it can throw up an error message */ + notify_free( ptr ); + /* Some sanity checks */ pInUse = (ARENA_INUSE *)ptr - 1; if (!(subheap = HEAP_FindSubHeap( heapPtr, pInUse ))) goto error; if ((char *)pInUse < (char *)subheap->base + subheap->headerSize) goto error; @@ -1289,8 +1291,6 @@ BOOLEAN WINAPI RtlFreeHeap( HANDLE heap, ULONG flags, PVOID ptr ) /* Turn the block into a free block */ - notify_free( ptr ); - HEAP_MakeInUseBlockFree( subheap, pInUse ); if (!(flags & HEAP_NO_SERIALIZE)) RtlLeaveCriticalSection( &heapPtr->critSection );