a88a9080cf75df027cbb2def2b5a965d4deb0cd7
braney
  Thu May 26 17:00:21 2016 -0700
fixing a memory leak

diff --git src/hg/lib/jksql.c src/hg/lib/jksql.c
index e37c828..87854db 100644
--- src/hg/lib/jksql.c
+++ src/hg/lib/jksql.c
@@ -856,43 +856,43 @@
         }
     }
 
 if (conn->hasTableCache)
     {
     monitorPrint(conn, "SQL_FOUND_TABLE_CACHE", "%s", tableListTable);
     return conn;
     }
 else
     {
     monitorPrint(conn, "SQL_NOT_FOUND_TABLE_CACHE", "%s", tableListTable);
     return NULL;
     }
 }
 
-static bool sqlTableCacheTableExists(struct sqlConnection *conn, char* table)
+static bool sqlTableCacheTableExists(struct sqlConnection *conn, char *maybeTable)
 /* check if table exists in table name cache */
 // (see redmine 3780 for some historical background on this caching)
 {
 char query[1024];
 char *tableListTable = cfgVal("showTableCache");
-table = cloneString(table);
+char table[2048];
+safecpy(table, sizeof table, maybeTable);
 char *dot = strchr(table, '.');
 if (dot)
     {
     *dot = 0;
     sqlSafef(query, sizeof(query), "SELECT count(*) FROM %s.%s WHERE tableName='%s'", table, tableListTable, dot+1);
-    *dot = '.';
     }
 else
     sqlSafef(query, sizeof(query), "SELECT count(*) FROM %s WHERE tableName='%s'", tableListTable, table);
 return (sqlQuickNum(conn, query)!=0);
 }
 
 static struct slName *sqlTableCacheQuery(struct sqlConnection *conn, char *likeExpr)
 /* This function queries the tableCache table. It is used by the sqlTableList 
  * function, so it doe not have to connect to the main sql server just to get a list of table names.
  * Returns all table names from the table name cache as a list. 
  * Can optionally filter with a likeExpr e.g. "LIKE snp%". */
 {
 char *tableList = cfgVal("showTableCache");
 struct slName *list = NULL, *el;
 char query[1024];