have to consider an empty, ready read bin in front of you if you are inserting a...
authorjjenista <jjenista>
Thu, 11 Nov 2010 01:35:46 +0000 (01:35 +0000)
committerjjenista <jjenista>
Thu, 11 Nov 2010 01:35:46 +0000 (01:35 +0000)
Robust/src/Runtime/oooJava/hashStructure.c

index 9eb8972044f6da603d014cfbcad60532864d690f..37909403b86b6ea6d492fcdd8fa6bc0f1d6ac507 100644 (file)
@@ -162,7 +162,7 @@ inline int rcr_BWRITEBINCASE(HashStructure *T, int key, SESEcommon *task, struct
   
   if (bintail->status==READY&&bintail->total==0) {
     //we may have to set write as ready
-    while(val->total==0) {
+    while(1) {
       if (val==((BinItem_rcr *)b)) {
        b->item.status=READY;
        be->head=val;
@@ -172,7 +172,10 @@ inline int rcr_BWRITEBINCASE(HashStructure *T, int key, SESEcommon *task, struct
          enqueuerecord(rcrrec, key, (BinItem_rcr *) b);
          return READY;
        }
+      } else if (val->total!=0) {
+       break;
       }
+      //TODO: WHEN WE DO POOLALLOC, WE LEAK NODES HERE AND ACCESS THEM W/O LOCKING BIN...
       val=val->next;
     }
   }