3670b9f2a58342dcc0629bad9d221a9d5e4ae5ff
braney
Thu Apr 23 14:39:37 2026 -0700
hgGene: render all sections and the Methods page for QuickLift knownGene clicks. refs #36370
- synonym.c: wrap the coord-qualified kgProteinID lookup in emptyForNull.
After quickLiftGenePred() rewrites curGeneChrom/Start/End to destination
coords, the same-transaction lookup against the source assembly's
knownGene table misses and sqlGetField returns NULL; strstr(NULL, "-")
on the next line segfaulted, truncating the page at Protein:
so GeneReviews, Methods, and any later sections never rendered.
- hgGene.c doKgMethod: when the track is quickLifted and the hub trackDb
has no html, refetch the trackDb from quickLiftDb using
trackHubSkipHubName(tableName). The Methods "Click here" link was
landing on a page whose entire body was printf("%s", NULL) => "(null)".
Verified on hgwdev-braney with Gerardo's repro (hg38 -> hs1 QuickLift,
chr7:156982676-156996015 window, MNX1 / ENST00000469500.5): all 13
sections now render and Methods serves the full GENCODE description.
No change on the native hg38 path.
diff --git src/hg/hgGene/synonym.c src/hg/hgGene/synonym.c
index 8e7f732c3aa..ea69102c129 100644
--- src/hg/hgGene/synonym.c
+++ src/hg/hgGene/synonym.c
@@ -371,31 +371,31 @@
else
/* do not show URL link if it is not found in gbCdnaInfoTable */
{
hPrintf("Representative RNA: %s ", mrnaAcc);
}
}
if (protAcc != NULL)
{
kgProteinID = cloneString("");
if (hTableExists(sqlGetDatabase(conn), "knownGene")
&& (isNotEmpty(curGeneChrom) &&
differentWord(curGeneChrom,"none")))
{
sqlSafef(condStr, sizeof(condStr), "name = '%s' and chrom = '%s' and txStart=%d and txEnd=%d",
id, curGeneChrom, curGeneStart, curGeneEnd);
- kgProteinID = sqlGetField(sqlGetDatabase(conn), "knownGene", "proteinID", condStr);
+ kgProteinID = emptyForNull(sqlGetField(sqlGetDatabase(conn), "knownGene", "proteinID", condStr));
}
hPrintf("Protein: ");
if (strstr(kgProteinID, "-") != NULL)
{
parAcc = cloneString(kgProteinID);
chp = strstr(parAcc, "-");
*chp = '\0';
/* show variant splice protein and the UniProt link here */
hPrintf("%s, splice isoform of ",
kgProteinID, kgProteinID);
hPrintf("%s\n",