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. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4232#note_51002