]> git.eshelyaron.com Git - emacs.git/commitdiff
(w32_system_process_attributes) [_MSC_VER < 1300]: Alternative calculation
authorEli Zaretskii <eliz@gnu.org>
Fri, 15 Aug 2008 17:36:48 +0000 (17:36 +0000)
committerEli Zaretskii <eliz@gnu.org>
Fri, 15 Aug 2008 17:36:48 +0000 (17:36 +0000)
of totphys for Visual Studio 6.

src/ChangeLog
src/w32.c

index d7f5b59387d02b2ff79b9fefd2c1383a9faecead..42a0cabbafc0ee1e0814e5c5d6618745b0524bc0 100644 (file)
@@ -1,5 +1,8 @@
 2008-08-15  Eli Zaretskii  <eliz@gnu.org>
 
+       * w32.c (w32_system_process_attributes) [_MSC_VER < 1300]:
+       Alternative calculation of totphys for Visual Studio 6.
+
        * w32fns.c [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
 
        * w32.c (_MEMORY_STATUS_EX, MEMORY_STATUS_EX, LPMEMORY_STATUS_EX):
index 483375dc0df70c98440f8a828a0396c2b0549834..c7af7f0634076ec8f53f34bae6b73abd6e4690a3 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -3992,7 +3992,19 @@ w32_system_process_attributes (pid)
                 attrs);
 
   if (global_memory_status_ex (&memstex))
+#if __GNUC__ || (defined (_MSC_VER) && _MSC_VER >= 1300)
     totphys = memstex.ullTotalPhys / 1024.0;
+#else
+  /* Visual Studio 6 cannot convert an unsigned __int64 type to
+     double, so we need to do this for it...  */
+    {
+      DWORD tot_hi = memstex.ullTotalPhys >> 32;
+      DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffff) >> 10;
+      DWORD tot_lo = memstex.ullTotalPhys % 1024;
+
+      totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;
+    }
+#endif /* __GNUC__ || _MSC_VER >= 1300 */
   else if (global_memory_status (&memst))
     totphys = memst.dwTotalPhys / 1024.0;