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