0194df3ad18b73a17bc652065e8ef9fcfaaa3188 braney Mon Jun 14 11:51:58 2021 -0700 fix crash in hTrackDb() when database doesn't exist or has no trackDb diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 09be762..5840dbd 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -4251,38 +4251,38 @@ return cacheTdb; } memCheckPoint(); // we want to know how much memory is used to build the tdbList } } tdbList = loadTrackDb(db, NULL); tdbList = trackDbLinkUpGenerations(tdbList); tdbList = trackDbPolishAfterLinkup(tdbList, db); if (doCache) trackDbCloneTdbListToSharedMem(db, tdbPathString, tdbList, memCheckPoint()); // Store negative cartVersion in priority field so that cartVersion "track" is first in tdbList -if (sameString(tdbList->track, "cartVersion")) +if ((tdbList != NULL) && sameString(tdbList->track, "cartVersion")) { if (retCartVersion) *retCartVersion = -tdbList->priority; tdbList = tdbList->next; } -return tdbList->next; +return tdbList; } struct trackDb *hTrackDb(char *db) /* see hTrackDbWithCartVersion above. */ { return hTrackDbWithCartVersion(db, NULL); } static struct trackDb *loadAndLookupTrackDb(struct sqlConnection *conn, char *where) /* Load trackDb object(s). Nothing done for composite tracks here. */ { return loadTrackDb(sqlGetDatabase(conn), where); }