From: Rémi Bernon <rbernon@codeweavers.com> Thanks to Bernhard Übelacker for debugging this issue. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55176 --- dlls/ntdll/heap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c index b40b2d2ace8..e146d5783a4 100644 --- a/dlls/ntdll/heap.c +++ b/dlls/ntdll/heap.c @@ -977,8 +977,10 @@ static void *allocate_region( struct heap *heap, ULONG flags, SIZE_T *region_siz if (heap && !(flags & HEAP_GROWABLE)) { - WARN( "Heap %p isn't growable, cannot allocate %#Ix bytes\n", heap, *region_size ); - return NULL; + /* workaround for compatibility with Win95 for Wing Commander Secret Ops/Prophecy */ + BOOL compat = (flags & HEAP_NO_SERIALIZE) && sizeof(void *) == sizeof(int); + WARN( "Heap %p isn't growable, %s %#Ix bytes\n", heap, compat ? "forcing allocation" : "cannot allocate", *region_size ); + if (!compat) return NULL; } *region_size = ROUND_SIZE( *region_size, align - 1 ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9804