src/hg/hgTracks/simpleTracks.c 1.142

1.142 2010/05/27 21:07:39 tdreszer
Fix for memory overrun when many classes are being selected via filterBySet()
Index: src/hg/hgTracks/simpleTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/simpleTracks.c,v
retrieving revision 1.141
retrieving revision 1.142
diff -b -B -U 4 -r1.141 -r1.142
--- src/hg/hgTracks/simpleTracks.c	20 May 2010 19:53:22 -0000	1.141
+++ src/hg/hgTracks/simpleTracks.c	27 May 2010 21:07:39 -0000	1.142
@@ -4061,14 +4061,15 @@
         if(clause == NULL)
             passesThroughFilter = TRUE;
         else
             {
-            safef(query, sizeof(query),
-                "select class from %s where name = \"%s\" and %s", classTable, lf->name,clause);
+            struct dyString *dyQuery = dyStringCreate("select class from %s where name = \"%s\" and ", classTable, lf->name);
+            dyStringAppend(dyQuery, clause);
+
             freeMem(clause);
 
             conn = hAllocConn(database);
-            sr = sqlGetResult(conn, query);
+            sr = sqlGetResult(conn, dyStringCannibalize(&dyQuery));
             if ((row = sqlNextRow(sr)) != NULL)
                 passesThroughFilter = TRUE;
             sqlFreeResult(&sr);
             hFreeConn(&conn);