From 16aadb2785600cc73cfe705a3a64e0315b14d99c Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 21 Dec 2007 14:27:40 +0100 Subject: [PATCH] kernel32: Yet another workaround for broken apps in GlobalMemoryStatus. --- dlls/kernel32/heap.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 7c72e6dcbc7..dc86d1ccdcc 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -1422,4 +1422,17 @@ VOID WINAPI GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer ) /* work around for broken photoshop 4 installer */ if ( lpBuffer->dwAvailPhys + lpBuffer->dwAvailPageFile >= 2U*1024*1024*1024) lpBuffer->dwAvailPageFile = 2U*1024*1024*1024 - lpBuffer->dwAvailPhys - 1; + + /* limit page file size for really old binaries */ + if (nt->OptionalHeader.MajorSubsystemVersion < 4) + { + if (lpBuffer->dwTotalPageFile > MAXLONG) lpBuffer->dwTotalPageFile = MAXLONG; + if (lpBuffer->dwAvailPageFile > MAXLONG) lpBuffer->dwAvailPageFile = MAXLONG; + } + + TRACE("Length %u, MemoryLoad %u, TotalPhys %lx, AvailPhys %lx," + " TotalPageFile %lx, AvailPageFile %lx, TotalVirtual %lx, AvailVirtual %lx\n", + lpBuffer->dwLength, lpBuffer->dwMemoryLoad, lpBuffer->dwTotalPhys, + lpBuffer->dwAvailPhys, lpBuffer->dwTotalPageFile, lpBuffer->dwAvailPageFile, + lpBuffer->dwTotalVirtual, lpBuffer->dwAvailVirtual ); }