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;
}