`mscomctl.ocx` (part of the VB6 common controls) calls `HeapCreate(0x04000000,1,0)`, that flag is the old and undocumented `HEAP_SHARED`.
`HEAP_CreateSystemHeap()` tries to map memory at `0x80000000`, this fails on Wow64 (and probably should for all 32-bit platforms for non-LAA EXEs).
As a workaround, map the memory anywhere if it fails at `0x80000000`.
I wasn't able to find much documentation about `HEAP_SHARED`, it dates back to Win9x and I guess Wine may have needed it for some native DLLs.
It's not clear whether modern Windows really implements any shared heap functionality any more, every 'shared' heap created returns a different pointer (even in the same process). Maybe Wine should remove the functionality too?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/920
In the ntdll file handling code, there are currently two duplicated file info setting functions: `get_file_info` and `fd_get_file_info`. One pasted on path strings, and the other based on file descriptors respectively. This patch set simplifies the code by unifying both functions into a single function ~~powered by `fstatat` instead of `lstat` and `fstat`~~.
--
v2: ntdll: Unify get_file_info and fd_get_file_info.
https://gitlab.winehq.org/wine/wine/-/merge_requests/942
Changes since last MR:
- Store list entry inside of `struct uia_node` instead of doing linear search for removal.
- Replace `WARN` with `ERR` if provider thread shuts down with nodes still in the provider thread list.
- Use `wine/rbtree.h` for looking up HUIANODEs by runtime ID.
- Get rid of `struct uia_node *container_node` inside of `struct uia_provider`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/943