coreutils/coreutils-8.3-mem.patch
2012-02-01 14:36:01 +04:00

35 lines
968 B
Diff

--- coreutils-8.3/lib/physmem.c.orig 2010-01-04 17:19:05.000000000 +0100
+++ coreutils-8.3/lib/physmem.c 2010-01-11 07:05:15.000000000 +0100
@@ -77,6 +77,14 @@
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+/* Cap physical memory to something sane */
+static double
+physmem_cap (double mem)
+{
+ double max = 1 << (sizeof(void *)*8 - 4);
+ return mem > max ? max : mem;
+}
+
/* Return the total amount of physical memory. */
double
physmem_total (void)
@@ -86,7 +94,7 @@
double pages = sysconf (_SC_PHYS_PAGES);
double pagesize = sysconf (_SC_PAGESIZE);
if (0 <= pages && 0 <= pagesize)
- return pages * pagesize;
+ return physmem_cap(pages * pagesize);
}
#endif
@@ -98,7 +106,7 @@
double pages = pss.physical_memory;
double pagesize = pss.page_size;
if (0 <= pages && 0 <= pagesize)
- return pages * pagesize;
+ return physmem_cap(pages * pagesize);
}
}
#endif