03bd4721a68ec74cab51164ff2d4b216cd6fe9b0 max Tue Sep 15 05:49:00 2026 -0700 trackDb README and comments: $hgsid is for native description pages only, refs #38353 The README still described $hgsid as a hub-page variable that is empty in native trackDb; both halves of that are now the other way round. The three call sites of hVarSubstTrackDbHtml that still said a hub page is the only reason it exists say what the call does now. diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index b7a61d4971f..1f9cd1bcf67 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -3771,32 +3771,33 @@ { trackDbPrintOrigAssembly(tdb, database); } static char *getHtmlFromSelfOrParent(struct trackDb *tdb, char *liftDb) /* Get html from self or from parent if not in self. */ { for (;tdb != NULL; tdb = tdb->parent) { if (sameString(trackHubSkipHubName(tdb->track), "quickLiftChain")) tdb->html = hFileContentsOrWarning(hHelpFile(trackHubSkipHubName(tdb->track))); if (liftDb && isEmpty(tdb->html)) tdb->html = getTrackHtml(liftDb, tdb->table); if (tdb->html != NULL && tdb->html[0] != 0) { - // a hub's description page never went through hgTrackDb, substitute its variables - // here. tdb is the track the html belongs to, so $parentTrack means its container. + // resolve $hgsid, which hgTrackDb had no cart to resolve, and for a hub the rest of + // its description page variables: a hub page never went through hgTrackDb at all. + // tdb is the track the html belongs to, so $parentTrack means its container. hVarSubstTrackDbHtml(cart, tdb, database); return tdb->html; } } return NULL; } void printTrackHtml(struct trackDb *tdb) /* If there's some html associated with track print it out. Also print * last update time for data table and make a link * to the TB table schema page for this table. */ { // safety net: a few detail pages never print a position, so flush the iframe here printPendingIframe(); if (!isCustomTrack(tdb->track) && !isMyVariantsType(tdb->type))