95807c7178fd38d52564f06df9fd5b90ceca1d24 braney Wed Sep 2 11:20:44 2026 -0700 hgTracks, hgc, hgPhyloPlace: small fixes from the v503 Preview II review, refs #38172 hgTracks.c: skipBeyondDelimit returns NULL when the delimiter is absent, and the caller decremented and printed it without checking. The noYearDbs list keeps every assembly that reaches it carrying a '(' today, so nothing shows, but printf used to print "(null)" where htmlEncode now walks off the end. Fall back to the whole freeze name. gtexTracks.c: the guard before the in place truncation was two bytes stricter than the buffer needs, so a description just over the budget printed in full. Say what the buffer requirement actually is. vcfTrack.c has the same shape a byte the other way and is already right. hgPhyloPlace.c: initialize size, as the two sibling call sites do. cgiMemBlobFind always sets it when it returns a block, so this is for consistency. bigBedClick.c: hubEncode was called twice on the same string in one statement. diff --git src/hg/hgc/bigBedClick.c src/hg/hgc/bigBedClick.c index fb4e461e271..3a5bd821609 100644 --- src/hg/hgc/bigBedClick.c +++ src/hg/hgc/bigBedClick.c @@ -284,31 +284,32 @@ // skip an optional '#' on the first field name if (i == 0 && startsWith("#", name)) name = skipBeyondDelimit(name, '#'); if (startsWith("_", name) && !(startsWith("_json", name)) && !(startsWith("json", name))) detailsTabPrintSpecial(name, val, extraFields); else if (slNameInList(tblFieldNames, name)) { userTbl = (struct embeddedTbl *)hashFindVal(fieldsToEmbeddedTbl, name); userTbl->encodedTbl = val; printEmbeddedTable(tdb, userTbl, tableLabelsDy); } else { // the field name and value come from the hub's bigBed when this is a hub track - printFieldLabelWithId(hubEncode(tdb, name), hubEncode(tdb, name)); + char *encName = hubEncode(tdb, name); + printFieldLabelWithId(encName, encName); printf("%s\n", hubEncode(tdb, val)); } printCount++; } printf("\n"); dyStringPrintf(tableLabelsDy, "];\n"); jsInline(dyStringCannibalize(&tableLabelsDy)); return printCount; } struct slPair *parseDetailsTablUrls(struct trackDb *tdb) /* Parse detailsUrls setting string into an slPair list of {offset column name, fileOrUrl} */ { char *detailsUrlsStr = trackDbSetting(tdb, "detailsUrls"); if (!detailsUrlsStr)