f6def44785079440787ef7b1c05660e6d16f992b angie Wed Jan 4 11:01:51 2017 -0800 If hTableExists is passed a db that doesn't exist (e.g. from all.joiner), it should return FALSE instead of crashing. fixes #18586 diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 8da9231..358e252 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -807,31 +807,34 @@ { if (trackHubDatabase(db)) { struct trackHub *hub = hubConnectGetHubForDb(db); if (hub != NULL) { struct trackHubGenome *hubGenome = trackHubFindGenome(hub, db); struct trackDb *tdbList = trackHubTracksForGenome(hub, hubGenome), *tdb; for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { hashAdd(dbTblHash, tdb->table, slNameNew(tdb->table)); } } return; } -struct sqlConnection *conn = hAllocConnProfile(profile, db); +struct sqlConnection *conn = hAllocConnProfileMaybe(profile, db); +if (conn == NULL) + // Database does not exist, so no tables in the database exist -- leave the hash empty. + return; struct slName *allTables = sqlListTables(conn); if (!sameString(CUSTOM_TRASH,db) && !sameString("hgFixed",db) && hCanHaveSplitTables(db)) { /* Consolidate split tables into one list per track: */ struct slName *tbl = NULL, *nextTbl = NULL; for (tbl = allTables; tbl != NULL; tbl = nextTbl) { struct hashEl *tHel = NULL; char trackName[HDB_MAX_TABLE_STRING]; char chrom[HDB_MAX_CHROM_STRING]; nextTbl = tbl->next; tbl->next = NULL; hParseTableName(db, tbl->name, trackName, chrom); tHel = hashLookup(dbTblHash, trackName);