changed intptr_t to self defined CmiIntPtr in converse.h.
authorGengbin Zheng <gzheng@illinois.edu>
Thu, 24 Sep 2009 19:23:49 +0000 (19:23 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Thu, 24 Sep 2009 19:23:49 +0000 (19:23 +0000)
changed the way "reserved" and "bytes" in isomallocAlign() call are specified.

src/conv-core/isomalloc.c

index c71e02f7808eafcb5525891b4de0604a62635179..01eeee204fd9ce78499e7ecf1f2a9cc2fdde18fc 100644 (file)
@@ -2212,12 +2212,12 @@ void *CmiIsomalloc(int size)
 #define MINSIZE                    (sizeof(CmiIsomallocBlock))
 
 /** return an aligned isomalloc memory, the alignment occurs after the
- *  first 'reserved' bytes
+ *  first 'reserved' bytes.  Total requested size is (size+reserved)
  */
 static void *_isomallocAlign(size_t align, size_t size, size_t reserved)
 {
         void *ptr;
-        intptr_t ptr2align;
+        CmiIntPtr ptr2align;
         CmiInt8 s, n, slot;
 
         if (align < MINSIZE) align = MINSIZE;
@@ -2227,10 +2227,9 @@ static void *_isomallocAlign(size_t align, size_t size, size_t reserved)
           while ((unsigned long)a < (unsigned long)align) a <<= 1;
           align = a;
         }
-        /* s = size + align + reserved; */
-        s = size + align;
+        s = size + reserved + align;
         ptr = CmiIsomalloc(s);
-        ptr2align = (intptr_t)ptr;
+        ptr2align = (CmiIntPtr)ptr;
         ptr2align += reserved;
         if (ptr2align % align != 0) { /* misaligned */
           CmiIsomallocBlock *blk = pointer2block(ptr);  /* save block */
@@ -2449,7 +2448,7 @@ void *CmiIsomallocBlockListMalloc(CmiIsomallocBlockList *l,size_t nBytes)
 void *CmiIsomallocBlockListMallocAlign(CmiIsomallocBlockList *l,size_t align,size_t nBytes)
 {
        Slot *n; /*Newly created slot*/
-       n=(Slot *)_isomallocAlign(align,sizeof(Slot)+nBytes,sizeof(Slot));
+       n=(Slot *)_isomallocAlign(align,nBytes,sizeof(Slot));
        /*Link the new block into the circular blocklist*/
        n->prev=l;
        n->next=l->next;