00c4273c6e28f9f6df2f42056d3e39e7eb88e5a6
kent
  Wed May 7 14:13:50 2014 -0700
Adding NULL check to genomeRangeTreeFree.
diff --git src/lib/genomeRangeTree.c src/lib/genomeRangeTree.c
index 81e8752..d6e2e7d 100644
--- src/lib/genomeRangeTree.c
+++ src/lib/genomeRangeTree.c
@@ -27,40 +27,44 @@
 t->hash = newHash(hashPowerOfTwoSize);
 t->lm = lmInit(0);
 return t;
 }
 
 struct genomeRangeTree *genomeRangeTreeNew()
 /* Create a new, empty, genomeRangeTree. Uses the default hash size.
  * Free with genomeRangeTreeFree. */
 {
 return genomeRangeTreeNewSize(0);
 }
 
 void genomeRangeTreeFree(struct genomeRangeTree **pTree)
 /* Free up genomeRangeTree.  */
 {
+struct genomeRangeTree *grt = *pTree;
+if (grt != NULL)
+    {
     /* need to manually free object due to thee way rbTreeNewDetailed is done */
-struct hashCookie hc = hashFirst((*pTree)->hash);
+    struct hashCookie hc = hashFirst(grt->hash);
     struct hashEl *hel;
     while ((hel = hashNext(&hc)) != NULL)
 	freeMem(hel->val);
 
-lmCleanup(&((*pTree)->lm));  /* clean up all the memory for all nodes for all trees */
-freeHash(&((*pTree)->hash)); /* free the hash table including names (trees are freed by lmCleanup) */
+    lmCleanup(&(grt->lm));  /* clean up all the memory for all nodes for all trees */
+    freeHash(&(grt->hash)); /* free the hash table including names (trees are freed by lmCleanup) */
     freez(pTree);                /* free this */
     }
+}
 
 struct rbTree *genomeRangeTreeFindRangeTree(struct genomeRangeTree *tree, char *chrom)
 /* Find the rangeTree for this chromosome, if any. Returns NULL if chrom not found. */
 {
 return hashFindVal(tree->hash, chrom);
 }
 
 struct rbTree *genomeRangeTreeFindOrAddRangeTree(struct genomeRangeTree *tree, char *chrom)
 /* Find the rangeTree for this chromosome, or add new chrom and empty rangeTree if not found. */
 {
 struct hashEl *hel;
 hel = hashStore(tree->hash, chrom);
 if (hel->val == NULL) /* need to add a new rangeTree */
     hel->val = rangeTreeNewDetailed(tree->lm, tree->stack);
 return hel->val;