589dc7ddbf04b23fbdc77c91bacc7ba7ea2c4e09
hiram
  Tue Feb 15 14:08:39 2011 -0800
allow up to 16 Gb of allocation for needLargeMem() on 64 bit machines
diff --git src/lib/memalloc.c src/lib/memalloc.c
index cad563d..34da485 100644
--- src/lib/memalloc.c
+++ src/lib/memalloc.c
@@ -60,32 +60,32 @@
 struct memHandler *oldHandler = mhStack;
 if (mhStack == &defaultMemHandler)
     errAbort("Too many popMemHandlers()");
 mhStack = mhStack->next;
 return oldHandler;
 }
 
 
 void setDefaultMemHandler()
 /* Sets memHandler to the default. */
 {
 mhStack = &defaultMemHandler;
 }
 
 /* 128*8*1024*1024 == 1073741824 == 2^30 on 32 bit machines,size_t == 4 bytes*/
-/* on 64 bit machines, size_t = 8 bytes, 2^30 * 2 * 2 = 2^32 == 4 Gb */
-static size_t maxAlloc = 128*8*1024*1024*(sizeof(size_t)/4)*(sizeof(size_t)/4);
+/* on 64 bit machines, size_t = 8 bytes, 2^30 * 2 * 2 * 2 * 2 = 2^34 == 16 Gb */
+static size_t maxAlloc = (size_t)128*8*1024*1024*(sizeof(size_t)/4)*(sizeof(size_t)/4)*(sizeof(size_t)/4*(sizeof(size_t)/4));
 
 void setMaxAlloc(size_t s)
 /* Set large allocation limit. */
 {
 maxAlloc = s;
 }
 
 void *needLargeMem(size_t size)
 /* This calls abort if the memory allocation fails. The memory is
  * not initialized to zero. */
 {
 void *pt;
 if (size == 0 || size >= maxAlloc)
     errAbort("needLargeMem: trying to allocate %llu bytes (limit: %llu)",
          (unsigned long long)size, (unsigned long long)maxAlloc);