# Make a reasonable guess about memory limits using sysconf().                                                      
# includes 5% slop factor as suggested in documentation.

--- jpeg-7/jmemansi.c
+++ jpeg-7/jmemansi.c
@@ -12,6 +12,15 @@
  * is shoved onto the user.
  */
 
+#include <unistd.h>
+
+#ifdef __FreeBSD__
+# include <sys/types.h>
+# include <sys/sysctl.h>
+# include <sys/vmmeter.h>
+# include <vm/vm_param.h>
+#endif
+
 #define JPEG_INTERNALS
 #include "jinclude.h"
 #include "jpeglib.h"
@@ -157,7 +166,26 @@
 GLOBAL(long)
 jpeg_mem_init (j_common_ptr cinfo)
 {
-  return DEFAULT_MAX_MEM;	/* default for max_memory_to_use */
+#ifdef _SC_AVPHYS_PAGES
+  long phys_size;
+ 
+  if ((phys_size = sysconf(_SC_AVPHYS_PAGES)) == -1)
+    return DEFAULT_MAX_MEM; /* default for max_memory_to_use */
+  if ((phys_size *= sysconf(_SC_PAGESIZE)) < 0)
+    return DEFAULT_MAX_MEM;
+  return (long) (phys_size * 0.95);
+#elif defined(HAVE_SYSCTL) && defined(HW_PHYSMEM)
+  /* This works on *bsd and darwin.  */
+  unsigned int physmem;
+  size_t len = sizeof physmem;
+  static int mib[2] = { CTL_HW, HW_PHYSMEM };
+
+  if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
+      && len == sizeof (physmem))
+    return (long) (physmem * 0.95);
+#endif
+
+  return DEFAULT_MAX_MEM;
 }
 
 GLOBAL(void)
