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