|
Original patch code by Valve Corporation
|
|
|
|
Original commits:
|
|
https://github.com/ValveSoftware/wine/commit/62c9478e4768e94e841da2ef75eb778ed346e3ab
|
|
|
|
LICENSE: See https://github.com/ValveSoftware/wine
|
|
|
|
Target Wine version of this patch file:
|
|
Wine 4.9 (Staging)
|
|
|
|
--- a/dlls/kernel32/heap.c
|
|
+++ b/dlls/kernel32/heap.c
|
|
@@ -75,6 +75,7 @@ WINE_DECLARE_DEBUG_CHANNEL(globalmem);
|
|
|
|
static HANDLE systemHeap; /* globally shared heap */
|
|
|
|
+extern BOOL CDECL __wine_needs_override_large_address_aware(void);
|
|
|
|
/***********************************************************************
|
|
* HEAP_CreateSystemHeap
|
|
@@ -1375,6 +1376,10 @@ VOID WINAPI GlobalMemoryStatus( LPMEMORY
|
|
MEMORYSTATUSEX memstatus;
|
|
OSVERSIONINFOW osver;
|
|
IMAGE_NT_HEADERS *nt = RtlImageNtHeader( GetModuleHandleW(0) );
|
|
+ static int force_large_address_aware = -1;
|
|
+
|
|
+ if (force_large_address_aware == -1)
|
|
+ force_large_address_aware = __wine_needs_override_large_address_aware();
|
|
|
|
/* Because GlobalMemoryStatus is identical to GlobalMemoryStatusEX save
|
|
for one extra field in the struct, and the lack of a bug, we simply
|
|
@@ -1415,7 +1420,8 @@ VOID WINAPI GlobalMemoryStatus( LPMEMORY
|
|
|
|
/* values are limited to 2Gb unless the app has the IMAGE_FILE_LARGE_ADDRESS_AWARE flag */
|
|
/* page file sizes are not limited (Adobe Illustrator 8 depends on this) */
|
|
- if (!(nt->FileHeader.Characteristics & IMAGE_FILE_LARGE_ADDRESS_AWARE))
|
|
+ if (!(nt->FileHeader.Characteristics & IMAGE_FILE_LARGE_ADDRESS_AWARE) &&
|
|
+ !force_large_address_aware)
|
|
{
|
|
if (lpBuffer->dwTotalPhys > MAXLONG) lpBuffer->dwTotalPhys = MAXLONG;
|
|
if (lpBuffer->dwAvailPhys > MAXLONG) lpBuffer->dwAvailPhys = MAXLONG;
|