From c91dd240987ed8f54e6d2d6ffb9ecbae33f05015 Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Sun, 16 Feb 2014 20:43:32 -0600 Subject: [PATCH] kernel32: Avoid truncating 64-bit ullTotalPhys value to 32 bits when copying to ullAvailPhys, ullTotalPageFile, and ullAvailPageFile. --- dlls/kernel32/heap.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 578cb432e53..8d4325aefcd 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);