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.