Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55842
The bug blames commit 059094c1c18ddc33b04eac53a72fd0eb7510be94 ("ntdll: Define heap block's BLOCK_FLAG_LFH as 0x80.") but actually before the blamed commit that worked essentially by chance.
The problem the patch is solving is that RtlValidateHeap() currently always fails for LFH blocks allocated from large block memory (vs subheap blocks). That can happen for large enough LFH block sizes. In case of the regressed game the user of RtlValidateHeap() is msvcr80.msvcrt_heap_free() which uses HeapValidate() to guess the heap used to allocate the pointer to free. I am attaching a standalone test program which can be used to reproduce the problem without the patch.
[test_lfh_validate.c](/uploads/006b04a9a00ffb7949956b66a275d5cf/test_lfh_validate.c)
--
v2: ntdll: Fix pending free block validation in heap_validate() for LFH blocks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4232
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55842
The bug blames commit 059094c1c18ddc33b04eac53a72fd0eb7510be94 ("ntdll: Define heap block's BLOCK_FLAG_LFH as 0x80.") but actually before the blamed commit that worked essentially by chance.
The problem the patch is solving is that RtlValidateHeap() currently always fails for LFH blocks allocated from large block memory (vs subheap blocks). That can happen for large enough LFH block sizes. In case of the regressed game the user of RtlValidateHeap() is msvcr80.msvcrt_heap_free() which uses HeapValidate() to guess the heap used to allocate the pointer to free. I am attaching a standalone test program which can be used to reproduce the problem without the patch.
[test_lfh_validate.c](/uploads/006b04a9a00ffb7949956b66a275d5cf/test_lfh_validate.c)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4232
--
v2: vkd3d-shader/ir: Validate the index of a TEMP register.
vkd3d-shader/ir: Validate the DCL_TEMPS instruction.
vkd3d-shader/ir: Validate unused indices in a register.
vkd3d-shader/ir: Validate the register index count.
vkd3d-shader/ir: Validate the register dimension.
vkd3d-shader/ir: Validate the register data type.
vkd3d-shader/ir: Validate the register precision.
vkd3d-shader/dxil: Use vsir_register_init() to initialize registers.
vkd3d-shader: Deduplicate profile version comparison functions.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/432
A few recent changes broke the macOS build. Unfortunately nobody noticed, because the macOS CI job always fails. :-(
However, we can still fix that. I'm not sure that the last commit is the best approach, would like to have comments from Henri.
--
v3: ci: Make the MoltenVK logging less verbose.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/423