Rémi Bernon (@rbernon) commented about dlls/ntdll/heap.c:
int i;
- if (subheap)
- {
base = subheap_base( subheap );
commit_end = subheap_commit_end( subheap );
- }
- else if ((arena_large = find_arena_large( heap, block, FALSE )))
- {
if (!validate_large_block( heap, &arena_large->block )) return FALSE;
if (block == &arena_large->block) return TRUE;
if (contains( &arena_large->block + 1, arena_large->data_size, block, sizeof(*block) )
&& block_get_flags( block ) & BLOCK_FLAG_LFH)
{
base = (const char *)(&arena_large->block + 1);
We should keep the invariant of `base` being aligned to REGION_ALIGN.