Rémi Bernon : ntdll: Cleanup HEAP_FindSubHeap and rename it to find_subheap.
Alexandre Julliard
julliard at winehq.org
Fri May 13 15:45:13 CDT 2022
Module: wine
Branch: master
Commit: 4d2dedb22b8c61918727f0d52580431275f49933
URL: https://source.winehq.org/git/wine.git/?a=commit;h=4d2dedb22b8c61918727f0d52580431275f49933
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Fri May 13 10:10:13 2022 +0200
ntdll: Cleanup HEAP_FindSubHeap and rename it to find_subheap.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/heap.c | 37 +++++++++++++++----------------------
1 file changed, 15 insertions(+), 22 deletions(-)
diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c
index 68f7e6edcc0..ab9985a1016 100644
--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -608,23 +608,16 @@ static inline void HEAP_InsertFreeBlock( HEAP *heap, ARENA_FREE *pArena, BOOL la
}
-/***********************************************************************
- * HEAP_FindSubHeap
- * Find the sub-heap containing a given address.
- *
- * RETURNS
- * Pointer: Success
- * NULL: Failure
- */
-static SUBHEAP *HEAP_FindSubHeap(
- const HEAP *heap, /* [in] Heap pointer */
- LPCVOID ptr ) /* [in] Address */
-{
- SUBHEAP *sub;
- LIST_FOR_EACH_ENTRY( sub, &heap->subheap_list, SUBHEAP, entry )
- if ((ptr >= sub->base) &&
- ((const char *)ptr < (const char *)sub->base + sub->size - sizeof(ARENA_INUSE)))
- return sub;
+static SUBHEAP *find_subheap( const HEAP *heap, const void *ptr )
+{
+ SUBHEAP *subheap;
+
+ LIST_FOR_EACH_ENTRY( subheap, &heap->subheap_list, SUBHEAP, entry )
+ {
+ if (contains( subheap_base( subheap ), subheap_size( subheap ), ptr, sizeof(struct block) ))
+ return subheap;
+ }
+
return NULL;
}
@@ -760,7 +753,7 @@ static void HEAP_MakeInUseBlockFree( SUBHEAP *subheap, ARENA_INUSE *pArena )
mark_block_free( pArena + 1, pArena->size & ARENA_SIZE_MASK, heap->flags );
if (!prev) return;
pArena = prev;
- subheap = HEAP_FindSubHeap( heap, pArena );
+ subheap = find_subheap( heap, pArena );
}
/* Check if we can merge with previous block */
@@ -1132,7 +1125,7 @@ static ARENA_FREE *HEAP_FindFreeBlock( HEAP *heap, SIZE_T size,
sizeof(ARENA_FREE) - sizeof(ARENA_INUSE);
if (arena_size >= size)
{
- subheap = HEAP_FindSubHeap( heap, pArena );
+ subheap = find_subheap( heap, pArena );
if (!HEAP_Commit( subheap, (ARENA_INUSE *)pArena, size )) return NULL;
*ppSubHeap = subheap;
return pArena;
@@ -1183,7 +1176,7 @@ static ARENA_FREE *HEAP_FindFreeBlock( HEAP *heap, SIZE_T size,
static BOOL HEAP_IsValidArenaPtr( const HEAP *heap, const ARENA_FREE *ptr )
{
unsigned int i;
- const SUBHEAP *subheap = HEAP_FindSubHeap( heap, ptr );
+ const SUBHEAP *subheap = find_subheap( heap, ptr );
if (!subheap) return FALSE;
if ((const char *)ptr >= (const char *)subheap->base + subheap->headerSize) return TRUE;
if (subheap != &heap->subheap) return FALSE;
@@ -1440,7 +1433,7 @@ static BOOL heap_validate_ptr( HEAP *heap, const void *ptr )
const ARENA_LARGE *large_arena;
SUBHEAP *subheap;
- if (!(subheap = HEAP_FindSubHeap( heap, arena )) ||
+ if (!(subheap = find_subheap( heap, arena )) ||
((const char *)arena < (char *)subheap->base + subheap->headerSize))
{
if (!(large_arena = find_large_block( heap, ptr )))
@@ -1495,7 +1488,7 @@ static BOOL validate_block_pointer( HEAP *heap, SUBHEAP **ret_subheap, const ARE
SUBHEAP *subheap;
BOOL ret = FALSE;
- if (!(*ret_subheap = subheap = HEAP_FindSubHeap( heap, arena )))
+ if (!(*ret_subheap = subheap = find_subheap( heap, arena )))
{
ARENA_LARGE *large_arena = find_large_block( heap, arena + 1 );
More information about the wine-cvs
mailing list