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