Alexandre Julliard : ntdll: Move alloc notification closer to the allocation for large blocks.

Alexandre Julliard julliard at winehq.org
Tue Jan 26 11:21:09 CST 2010


Module: wine
Branch: master
Commit: cb2a5f7ef9d5ca55c27d3cb53b017c0c3c655f2a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cb2a5f7ef9d5ca55c27d3cb53b017c0c3c655f2a

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Jan 26 16:03:07 2010 +0100

ntdll: Move alloc notification closer to the allocation for large blocks.

---

 dlls/ntdll/heap.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c
index 72a0069..b68af25 100644
--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -693,6 +693,7 @@ static void *allocate_large_block( HEAP *heap, DWORD flags, SIZE_T size )
     arena->size = ARENA_LARGE_SIZE;
     arena->magic = ARENA_LARGE_MAGIC;
     list_add_tail( &heap->large_list, &arena->entry );
+    notify_alloc( arena + 1, size, flags & HEAP_ZERO_MEMORY );
     return arena + 1;
 }
 
@@ -1518,7 +1519,6 @@ PVOID WINAPI RtlAllocateHeap( HANDLE heap, ULONG flags, SIZE_T size )
         void *ret = allocate_large_block( heap, flags, size );
         if (!(flags & HEAP_NO_SERIALIZE)) RtlLeaveCriticalSection( &heapPtr->critSection );
         if (!ret && (flags & HEAP_GENERATE_EXCEPTIONS)) RtlRaiseStatus( STATUS_NO_MEMORY );
-        notify_alloc( ret, size, flags & HEAP_ZERO_MEMORY );
         TRACE("(%p,%08x,%08lx): returning %p\n", heap, flags, size, ret );
         return ret;
     }
@@ -1675,7 +1675,6 @@ PVOID WINAPI RtlReAllocateHeap( HANDLE heap, ULONG flags, PVOID ptr, SIZE_T size
         if (!find_large_block( heapPtr, ptr )) goto error;
         if (!(ret = realloc_large_block( heapPtr, flags, ptr, size ))) goto oom;
         notify_free( ptr );
-        notify_alloc( ret, size, flags & HEAP_ZERO_MEMORY );
         goto done;
     }
     if ((char *)pArena < (char *)subheap->base + subheap->headerSize) goto error;
@@ -1693,7 +1692,6 @@ PVOID WINAPI RtlReAllocateHeap( HANDLE heap, ULONG flags, PVOID ptr, SIZE_T size
         {
             if (flags & HEAP_REALLOC_IN_PLACE_ONLY) goto oom;
             if (!(ret = allocate_large_block( heapPtr, flags, size ))) goto oom;
-            notify_alloc( ret, size, flags & HEAP_ZERO_MEMORY );
             memcpy( ret, pArena + 1, oldActualSize );
             notify_free( pArena + 1 );
             HEAP_MakeInUseBlockFree( subheap, pArena );




More information about the wine-cvs mailing list