9b8560a9176523093c93e05e5c40e294abec59d4 braney Mon Apr 13 06:37:15 2026 -0700 Fix crash in hNibForChrom for assembly hubs by falling back to trackHubGetGenomeUndecorated before dereferencing genome pointer, refs #37356 Co-Authored-By: Claude Opus 4.6 (1M context) diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 3950824e761..68d953b9431 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -1116,30 +1116,37 @@ int hChromSize(char *db, char *chromName) /* Return size of chromosome. */ { struct chromInfo *ci = mustGetChromInfo(db, chromName); return ci->size; } void hNibForChrom(char *db, char *chromName, char retNibName[HDB_MAX_PATH_STRING]) /* Get .nib file associated with chromosome. */ { if (startsWith("GC", db)) { struct trackHubGenome *genome = trackHubGetGenome(db); + + if (genome == NULL) + genome = trackHubGetGenomeUndecorated(db); + + if (genome == NULL) + errAbort("cannot find %s in loaded track hubs", db); + if (genome->twoBitPath) safef(retNibName, HDB_MAX_PATH_STRING, "%s", genome->twoBitPath); return; } if (cfgOptionBooleanDefault("forceTwoBit", TRUE) == TRUE && !trackHubDatabase(db)) { char buf[HDB_MAX_PATH_STRING]; safef(buf, HDB_MAX_PATH_STRING, "/gbdb/%s/%s.2bit", db, db); char *newPath = hReplaceGbdb(buf); safecpy(retNibName, HDB_MAX_PATH_STRING, newPath); freeMem(newPath); return; } if (hDbIsActive(db))