From 235661f6d5ee8034271d01e21d279eb35aeba3ca Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 15 Aug 2008 17:36:48 +0000 Subject: [PATCH] (w32_system_process_attributes) [_MSC_VER < 1300]: Alternative calculation of totphys for Visual Studio 6. --- src/ChangeLog | 3 +++ src/w32.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index d7f5b59387d..42a0cabbafc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2008-08-15 Eli Zaretskii + * 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): diff --git a/src/w32.c b/src/w32.c index 483375dc0df..c7af7f06340 100644 --- 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; -- 2.39.2