From: Ken Thomases Subject: [PATCH 2/7] kernel32: Avoid truncating 64-bit ullTotalPhys value to 32 bits when copying to ullAvailPhys, ullTotalPageFile, and ullAvailPageFile. Message-Id: <50D68142-485D-4F20-A662-9CA2C800605D@codeweavers.com> Date: Sun, 16 Feb 2014 20:43:32 -0600 --- dlls/kernel32/heap.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 578cb43..8d4325a 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -1226,11 +1226,13 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex ) lpmemex->ullTotalPhys = val; mib[1] = HW_USERMEM; size_sys = sizeof(val); - if (sysctl(mib, 2, &val, &size_sys, NULL, 0) || size_sys != sizeof(val) || !val) - val = lpmemex->ullTotalPhys; - lpmemex->ullAvailPhys = val; - lpmemex->ullTotalPageFile = val; - lpmemex->ullAvailPageFile = val; + if (!sysctl(mib, 2, &val, &size_sys, NULL, 0) && size_sys == sizeof(val) && val) + lpmemex->ullAvailPhys = val; + else + lpmemex->ullAvailPhys = lpmemex->ullTotalPhys; + + lpmemex->ullTotalPageFile = lpmemex->ullAvailPhys; + lpmemex->ullAvailPageFile = lpmemex->ullAvailPhys; #elif defined ( sun ) pagesize=sysconf(_SC_PAGESIZE); maxpages=sysconf(_SC_PHYS_PAGES);