adb44878f1e9e3f2502af05d6e85292eaa54c600
kate
  Thu Jan 29 15:06:36 2015 -0800
Fix bad loop over input field meta tables

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 599842f..7d00446 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4211,44 +4211,45 @@
     dyStringPrintf(ds, "<A target='_blank' class='cv' title='%s' href='%s'>%s</A>\n",
                         meta->description, meta->url, term);
 return dyStringCannibalize(&ds);
 }
 
 struct hash *metaBasicFromSetting(struct trackDb *parentTdb, struct cart *cart, char *setting)
 /* Get description and URL for all metaTables. Returns a hash of hashes */
 {
 if (differentString(setting, "subGroupMetaTables") &&
     differentString(setting, "inputFieldMetaTables"))
         return NULL;
 char *spec = trackDbSetting(parentTdb, setting);
 if (!spec)
     return NULL;
 struct slPair *metaTables = slPairFromString(spec);
+struct slPair *metaTable = NULL;
 struct hash *tableHash = hashNew(0);
-struct slPair *metaTable;
 struct sqlResult *sr;
 char **row;
 char query[256];
 char *database = cartString(cart, "db");
-char *db = database;
-for (metaTable = metaTables; metaTable != NULL; metaTable = metaTables->next)
+for (metaTable = metaTables; metaTable != NULL; metaTable = metaTable->next)
     {
-    char *tableName = chopPrefix(cloneString(metaTable->val));
-    if (differentString(tableName, metaTable->val))
+    char *db = database;
+    char *tableSpec = (char *)metaTable->val;
+    char *tableName = chopPrefix(tableSpec);
+    if (differentString(tableName, tableSpec))
         {
-        chopSuffix(metaTable->val);
-        db = metaTable->val;
+        chopSuffix(tableSpec);
+        db = tableSpec;
         }
     struct sqlConnection *conn = hAllocConn(db);
     boolean hasUrl = FALSE;
     struct hash *subgroupHash = hashNew(0);
     hashAdd(tableHash, metaTable->name, subgroupHash);
     if (hHasField(db, tableName, "url"))
         {
         sqlSafef(query, sizeof(query), "select term, description, url from %s", tableName);
         hasUrl = TRUE;
         }
     else
         sqlSafef(query, sizeof(query), "select term, description from %s", tableName);
     sr = sqlGetResult(conn, query);
     while ((row = sqlNextRow(sr)) != NULL)
         {