From: Bruno Haible <bruno@clisp.org>
Date: Tue, 18 Jan 2011 18:47:37 +0000 (+0100)
Subject: get-rusage-as: Improvement for Cygwin.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85570b0dcffcbd7c3a13a417a083a728d83078ca;p=pspp

get-rusage-as: Improvement for Cygwin.

* lib/get-rusage-as.c (get_rusage_as_via_iterator): On Windows, ignore
areas that are merely reserved.
---

diff --git a/ChangeLog b/ChangeLog
index 783de42c1e..f997119174 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-18  Bruno Haible  <bruno@clisp.org>
+
+	get-rusage-as: Improvement for Cygwin.
+	* lib/get-rusage-as.c (get_rusage_as_via_iterator): On Windows, ignore
+	areas that are merely reserved.
+
 2011-01-18  Paul Eggert  <eggert@cs.ucla.edu>
 
 	strftime: remove dependencies on multibyte modules
diff --git a/lib/get-rusage-as.c b/lib/get-rusage-as.c
index 3ca1366008..7ab1c93153 100644
--- a/lib/get-rusage-as.c
+++ b/lib/get-rusage-as.c
@@ -653,7 +653,11 @@ get_rusage_as_via_iterator (void)
   while (VirtualQuery ((void*)address, &info, sizeof(info)) == sizeof(info))
     {
       if (info.State != MEM_FREE)
-        total += info.RegionSize;
+        /* Ignore areas where info.Protect has the undocumented value 0.
+           This is needed, so that on Cygwin, areas used by malloc() are
+           distinguished from areas reserved for future malloc().  */
+        if (info.Protect != 0)
+          total += info.RegionSize;
       address = (unsigned long)info.BaseAddress + info.RegionSize;
     }
   return total;