src/lib/asParse.c 1.9

1.9 2009/08/13 21:48:17 braney
add some memory clean up routines
Index: src/lib/asParse.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/asParse.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -b -B -U 4 -r1.8 -r1.9
--- src/lib/asParse.c	17 Apr 2009 23:22:37 -0000	1.8
+++ src/lib/asParse.c	13 Aug 2009 21:48:17 -0000	1.9
@@ -289,8 +289,62 @@
 tokenizerFree(&tkz);
 return objList;
 }
 
+
+void asColumnFree(struct asColumn **pAs)
+/* free a single asColumn */
+{
+struct asColumn *as = *pAs;
+if (as != NULL)
+    {
+    freeMem(as->name);
+    freeMem(as->comment);
+    freez(pAs);
+    }
+}
+
+
+void asColumnFreeList(struct asColumn **pList)
+/* free a list of asColumn */
+{
+struct asColumn *el, *next;
+
+for (el = *pList; el != NULL; el = next)
+    {
+    next = el->next;
+    asColumnFree(&el);
+    }
+*pList = NULL;
+}
+
+void asObjectFree(struct asObject **pAs)
+/* free a single asObject */
+{
+struct asObject *as = *pAs;
+if (as != NULL)
+    {
+    freeMem(as->name);
+    freeMem(as->comment);
+    asColumnFreeList(&as->columnList);
+    freez(pAs);
+    }
+}
+
+
+void asObjectFreeList(struct asObject **pList)
+/* free a list of asObject */
+{
+struct asObject *el, *next;
+
+for (el = *pList; el != NULL; el = next)
+    {
+    next = el->next;
+    asObjectFree(&el);
+    }
+*pList = NULL;
+}
+
 struct asObject *asParseFile(char *fileName)
 /* Parse autoSql .as file. */
 {
 return asParseLineFile(lineFileOpen(fileName, TRUE));
@@ -302,7 +356,8 @@
 {
 char *dupe = cloneString(text);
 struct lineFile *lf = lineFileOnString("text", TRUE, dupe);
 struct asObject *objList = asParseLineFile(lf);
+freez(&dupe);
 return objList;
 }