Rémi Bernon : ntdll: Rename local variables in heap_reallocate.

Alexandre Julliard julliard at winehq.org
Thu May 19 16:15:12 CDT 2022


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Tue May  3 17:30:17 2022 +0200

ntdll: Rename local variables in heap_reallocate.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/heap.c | 52 ++++++++++++++++++++++++----------------------------
 1 file changed, 24 insertions(+), 28 deletions(-)

diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c
index d0f547faee7..ac994167f22 100644
--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -1646,17 +1646,16 @@ BOOLEAN WINAPI DECLSPEC_HOTPATCH RtlFreeHeap( HANDLE heap, ULONG flags, void *pt
 
 static NTSTATUS heap_reallocate( HEAP *heap, ULONG flags, void *ptr, SIZE_T size, void **ret )
 {
-    struct block *next;
-    ARENA_INUSE *pArena;
+    SIZE_T old_data_size, old_size, data_size;
+    struct block *next, *block;
     SUBHEAP *subheap;
-    SIZE_T oldBlockSize, oldActualSize, rounded_size;
     NTSTATUS status;
 
-    rounded_size = ROUND_SIZE(size) + HEAP_TAIL_EXTRA_SIZE(flags);
-    if (rounded_size < size) return STATUS_NO_MEMORY;  /* overflow */
-    if (rounded_size < HEAP_MIN_DATA_SIZE) rounded_size = HEAP_MIN_DATA_SIZE;
+    data_size = ROUND_SIZE(size) + HEAP_TAIL_EXTRA_SIZE(flags);
+    if (data_size < size) return STATUS_NO_MEMORY;  /* overflow */
+    if (data_size < HEAP_MIN_DATA_SIZE) data_size = HEAP_MIN_DATA_SIZE;
 
-    if (!(pArena = unsafe_block_from_ptr( heap, ptr, &subheap ))) return STATUS_INVALID_PARAMETER;
+    if (!(block = unsafe_block_from_ptr( heap, ptr, &subheap ))) return STATUS_INVALID_PARAMETER;
     if (!subheap)
     {
         if (!(*ret = realloc_large_block( heap, flags, ptr, size ))) return STATUS_NO_MEMORY;
@@ -1665,49 +1664,46 @@ static NTSTATUS heap_reallocate( HEAP *heap, ULONG flags, void *ptr, SIZE_T size
 
     /* Check if we need to grow the block */
 
-    oldBlockSize = (pArena->size & ARENA_SIZE_MASK);
-    oldActualSize = (pArena->size & ARENA_SIZE_MASK) - pArena->unused_bytes;
-    if (rounded_size > oldBlockSize)
+    old_data_size = (block->size & ARENA_SIZE_MASK);
+    old_size = (block->size & ARENA_SIZE_MASK) - block->unused_bytes;
+    if (data_size > old_data_size)
     {
-        if ((next = next_block( subheap, pArena )) && (block_get_flags( next ) & ARENA_FLAG_FREE) &&
-            rounded_size < HEAP_MIN_LARGE_BLOCK_SIZE && rounded_size <= oldBlockSize + block_get_size( next ))
+        if ((next = next_block( subheap, block )) && (block_get_flags( next ) & ARENA_FLAG_FREE) &&
+            data_size < HEAP_MIN_LARGE_BLOCK_SIZE && data_size <= old_data_size + block_get_size( next ))
         {
             /* The next block is free and large enough */
             struct entry *entry = (struct entry *)next;
             list_remove( &entry->entry );
-            pArena->size += block_get_size( next );
-            if (!HEAP_Commit( subheap, pArena, rounded_size )) return STATUS_NO_MEMORY;
-            notify_realloc( pArena + 1, oldActualSize, size );
-            shrink_used_block( subheap, pArena, rounded_size, size );
+            block->size += block_get_size( next );
+            if (!HEAP_Commit( subheap, block, data_size )) return STATUS_NO_MEMORY;
+            notify_realloc( block + 1, old_size, size );
+            shrink_used_block( subheap, block, data_size, size );
         }
         else
         {
             if (flags & HEAP_REALLOC_IN_PLACE_ONLY) return STATUS_NO_MEMORY;
             if ((status = heap_allocate( heap, flags & ~HEAP_ZERO_MEMORY, size, ret ))) return status;
-            memcpy( *ret, pArena + 1, oldActualSize );
-            if (flags & HEAP_ZERO_MEMORY) memset( (char *)*ret + oldActualSize, 0, size - oldActualSize );
-            notify_free( pArena + 1 );
-            HEAP_MakeInUseBlockFree( subheap, pArena );
+            memcpy( *ret, block + 1, old_size );
+            if (flags & HEAP_ZERO_MEMORY) memset( (char *)*ret + old_size, 0, size - old_size );
+            notify_free( ptr );
+            HEAP_MakeInUseBlockFree( subheap, block );
             return STATUS_SUCCESS;
         }
     }
     else
     {
-        notify_realloc( pArena + 1, oldActualSize, size );
-        shrink_used_block( subheap, pArena, rounded_size, size );
+        notify_realloc( block + 1, old_size, size );
+        shrink_used_block( subheap, block, data_size, size );
     }
 
     /* Clear the extra bytes if needed */
 
-    if (size > oldActualSize)
-        initialize_block( (char *)(pArena + 1) + oldActualSize, size - oldActualSize,
-                          pArena->unused_bytes, flags );
-    else
-        mark_block_tail( (char *)(pArena + 1) + size, pArena->unused_bytes, flags );
+    if (size <= old_size) mark_block_tail( (char *)(block + 1) + size, block->unused_bytes, flags );
+    else initialize_block( (char *)(block + 1) + old_size, size - old_size, block->unused_bytes, flags );
 
     /* Return the new arena */
 
-    *ret = pArena + 1;
+    *ret = block + 1;
     return STATUS_SUCCESS;
 }
 




More information about the wine-cvs mailing list