8a5fe8cd5cb18f43e00a6e82cb9578945d2d043a
braney
  Wed Apr 4 11:07:09 2012 -0700
fix bug in annoGratorClose
diff --git src/lib/annoGrator.c src/lib/annoGrator.c
index 6b70fb5..4cad8bf 100644
--- src/lib/annoGrator.c
+++ src/lib/annoGrator.c
@@ -124,32 +124,32 @@
 	    *retRJFilterFailed = TRUE;
 	    break;
 	    }
 	}
     }
 slReverse(&rowList);
 return rowList;
 }
 
 void annoGratorClose(struct annoStreamer **pSelf)
 /* Free self (including mySource). */
 {
 if (pSelf == NULL)
     return;
 struct annoGrator *self = *(struct annoGrator **)pSelf;
+annoRowFreeList(&(self->qHead), self->mySource);
 self->mySource->close(&(self->mySource));
-annoRowFreeList(&(self->qHead), (struct annoStreamer *)self);
 freeMem(self->prevPChrom);
 freez(pSelf);
 }
 
 static struct annoRow *noNextRow(struct annoStreamer *self)
 /* nextRow() is N/A for annoGrator, which needs caller to use integrate() instead. */
 {
 errAbort("nextRow() called on annoGrator object, but integrate() should be called instead");
 return NULL;
 }
 
 static void agReset(struct annoGrator *self)
 /* Reset all position associated with state */
 {
 freez(&self->prevPChrom);