bug fix: memory queue has the case of empty rentry.
authoryeom <yeom>
Wed, 14 Jul 2010 01:40:23 +0000 (01:40 +0000)
committeryeom <yeom>
Wed, 14 Jul 2010 01:40:23 +0000 (01:40 +0000)
Robust/src/Runtime/garbage.c

index bc12ef06a5043d2bcc02698dedc95b7033e89ccc..9e7b62ee19ff8d08656dca91117237e71ffedc45 100644 (file)
@@ -1064,6 +1064,23 @@ updateMemoryQueue(SESEcommon_p seseParent){
        int idx;
        for(idx=0; idx<vt->index; idx++){
          REntry *rentry=vt->array[idx];
+         if(rentry!=NULL){
+           struct garbagelist * gl= (struct garbagelist *)&(((SESEcommon*)(rentry->seseRec))[1]);
+           updateAscendantSESE(gl);
+           while(gl!=NULL) {
+             int i;
+             for(i=0; i<gl->size; i++) {
+               void * orig=gl->array[i];
+               ENQUEUE(orig, gl->array[i]);
+             }
+             gl=gl->next;
+           } 
+         }
+       }
+      }else if(memoryItem->type==SINGLEITEM){
+       SCC *scc=(SCC*)memoryItem;
+       REntry *rentry=scc->val;
+       if(rentry!=NULL){
          struct garbagelist * gl= (struct garbagelist *)&(((SESEcommon*)(rentry->seseRec))[1]);
          updateAscendantSESE(gl);
          while(gl!=NULL) {
@@ -1075,19 +1092,6 @@ updateMemoryQueue(SESEcommon_p seseParent){
            gl=gl->next;
          } 
        }
-      }else if(memoryItem->type==SINGLEITEM){
-       SCC *scc=(SCC*)memoryItem;
-       REntry *rentry=scc->val;
-       struct garbagelist * gl= (struct garbagelist *)&(((SESEcommon*)(rentry->seseRec))[1]);
-       updateAscendantSESE(gl);
-       while(gl!=NULL) {
-         int i;
-         for(i=0; i<gl->size; i++) {
-           void * orig=gl->array[i];
-           ENQUEUE(orig, gl->array[i]);
-         }
-         gl=gl->next;
-       } 
       }
       memoryItem=memoryItem->next;
     }