Jinoh Kang (@iamahuman) commented about dlls/ntdll/heap.c:
+ group_size = offsetof( struct group, first_block ) + GROUP_BLOCK_COUNT * block_size; + group_block_size = heap_get_block_size( heap, flags, group_size ); + + heap_lock( heap, flags ); + + if (group_block_size >= HEAP_MIN_LARGE_BLOCK_SIZE) + status = heap_allocate_large( heap, flags & ~HEAP_ZERO_MEMORY, group_block_size, group_size, (void **)&group ); + else + status = heap_allocate_block( heap, flags & ~HEAP_ZERO_MEMORY, group_block_size, group_size, (void **)&group ); + + heap_unlock( heap, flags ); + + if (status) return NULL; + + block_set_flags( (struct block *)group - 1, 0, BLOCK_FLAG_LFH ); + WriteNoFence( &group->free_bits, ~0 ); `[free-unset-v7]`
WriteNoFence( &group->free_bits, ~GROUP_FLAG_FREE );
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/1628#note_23420