make the previous fix for mac only since it broke 32 bit linux
authorGengbin Zheng <gzheng@illinois.edu>
Thu, 15 Jan 2009 18:52:28 +0000 (18:52 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Thu, 15 Jan 2009 18:52:28 +0000 (18:52 +0000)
src/conv-core/isomalloc.c

index 537588765412566524d34a0c3537d5623d9afeda..8127bceb802991f0a669ab3ae93b83b363dc75c0 100644 (file)
@@ -1829,15 +1829,17 @@ static int find_largest_free_region(memRegion_t *destRegion) {
     
     /*Align each memory region*/
     for (i=0;i<nRegions;i++) {
-      /* memRegion_t old=regions[i]; */
+      memRegion_t old=regions[i];
       memRange_t p=(memRange_t)regions[i].start;
       p&=~(regions[i].len-1); /*Round start down to a len-boundary (mask off low bits)*/
       regions[i].start=(char *)p;
-      regions[i].len *= 2;
+#if CMK_ISOMALLOC_MACHACK
+      if (regions[i].start+regions[i].len*2>regions[i].start) regions[i].len *= 2;
+#endif
 #if CMK_THREADS_DEBUG
-      CmiPrintf("[%d] Memory map: %p - %p %s (at %p)\n",CmiMyPe(),
+      CmiPrintf("[%d] Memory map: %p - %p (len: %lu => %lu) %s \n",CmiMyPe(),
              regions[i].start,regions[i].start+regions[i].len,
-             regions[i].type, old.start);
+             old.len, regions[i].len, regions[i].type);
 #endif
     }