Fix for `compile' (Bug#5771).
[bpt/emacs.git] / src / vm-limit.c
index 907732c..a5b07eb 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions for memory limit warnings.
    Copyright (C) 1990, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-                 2008  Free Software Foundation, Inc.
+                 2008, 2009, 2010  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -19,6 +19,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifdef emacs
 #include <config.h>
+#include <setjmp.h>
 #include "lisp.h"
 #endif
 
@@ -129,21 +130,30 @@ get_lim_data ()
      available, which causes bogus "past 95% of memory limit"
      warnings.  Try to overcome that via circumstantial evidence.  */
   lim1 = info.available_memory;
-  lim2 = info.available_physical_pages * 4096;
+  lim2 = info.available_physical_pages;
   /* DPMI Spec: "Fields that are unavailable will hold -1."  */
   if ((long)lim1 == -1L)
     lim1 = 0;
   if ((long)lim2 == -1L)
     lim2 = 0;
+  else
+    lim2 *= 4096;
   /* Surely, the available memory is at least what we have physically
      available, right?  */
-  if (lim1 > lim2)
+  if (lim1 >= lim2)
     lim_data = lim1;
   else
     lim_data = lim2;
   /* Don't believe they will give us more that 0.5 GB.   */
-  if (lim_data > 512 * 1024 * 1024)
-    lim_data = 512 * 1024 * 1024;
+  if (lim_data > 512U * 1024U * 1024U)
+    lim_data = 512U * 1024U * 1024U;
+}
+
+unsigned long
+ret_lim_data ()
+{
+  get_lim_data ();
+  return lim_data;
 }
 #else /* not MSDOS */
 static void