Ken Thomases : kernel32: Avoid truncating 64-bit ullTotalPhys value to 32 bits when copying to ullAvailPhys , ullTotalPageFile, and ullAvailPageFile.

Alexandre Julliard julliard at winehq.org
Mon Feb 17 13:45:14 CST 2014


Module: wine
Branch: master
Commit: c91dd240987ed8f54e6d2d6ffb9ecbae33f05015
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c91dd240987ed8f54e6d2d6ffb9ecbae33f05015

Author: Ken Thomases <ken at codeweavers.com>
Date:   Sun Feb 16 20:43:32 2014 -0600

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 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);




More information about the wine-cvs mailing list