fix a bug in error checking for overflow
authorGengbin Zheng <gzheng@illinois.edu>
Thu, 15 Mar 2012 20:03:41 +0000 (15:03 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Thu, 15 Mar 2012 20:03:41 +0000 (15:03 -0500)
src/arch/gemini_gni/machine.c

index df78445f414e4a681e8df3e70210ddf67f0372b9..5688ce715267f7ddaf68196af1f1213bd7c8eeed 100644 (file)
@@ -678,7 +678,7 @@ inline  int  AckPool_getslot(void *addr)
     if (s == -1) {
         // printf("[%d] AckPool_getslot expand: %d\n", myrank, ackpoolsize);
         int newsize = ackpoolsize * 2;
-        if (ackpoolsize == 1<<(32-ACK_SHIFT)) CmiAbort("AckPool too large");
+        if (newsize >= 1<<(32-ACK_SHIFT)) CmiAbort("AckPool too large");
         struct AckPool   *old_ackpool = ackpool;
         ackpool = (struct AckPool *)malloc(newsize*sizeof(struct AckPool));
         memcpy(ackpool, old_ackpool, ackpoolsize*sizeof(struct AckPool));