800bc2ec4d548b450cd21f0bd8bd5b160a353607
max
  Mon Aug 17 02:32:06 2026 -0700
hgc: fix RetroGenes alignment crash from reading unset 'table' cart var

retroShowCdnaAli() read a cart variable "table" that no code path sets;
only "aliTable" is passed to the hgcRetroCdnaAli handler, so cartString()
aborted with hashMustFindVal: 'table' not found. Use the aliTable value
(already read into 'track') for mappingInfoNew(), the same table name
retroClickHandler passes. refs #38114

diff --git src/hg/hgc/retroClick.c src/hg/hgc/retroClick.c
index 5497a4db95c..ff4c9ccb824 100644
--- src/hg/hgc/retroClick.c
+++ src/hg/hgc/retroClick.c
@@ -783,35 +783,34 @@
 
 sqlSafef(query, sizeof(query), "select * from %s where qName = '%s' and tStart = %d",
       table, mi->pg->name, start);
 sr = sqlMustGetResult(conn, query);
 row = sqlNextRow(sr);
 psl = pslLoad(row+hasBin);
 sqlFreeResult(&sr);
 return psl;
 }
 
 void retroShowCdnaAli(char *mappedId)
 /* Show alignment for accession, mostly ripped off from htcCdnaAli */
 {
 char *track = cartString(cart, "aliTable");
 struct trackDb *tdb = hashMustFindVal(trackHash, track);
-char *table = cartString(cart, "table");
 int start = cartInt(cart, "o");
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlConnection *defDbConn = NULL;
-struct mappingInfo *mi = mappingInfoNew(conn, table, mappedId);
+struct mappingInfo *mi = mappingInfoNew(conn, track, mappedId);
 struct genbankCds cds = getCds(conn, mi);
 struct psl *psl;
 struct dnaSeq *rnaSeq = NULL;
 char *spec = trackDbRequiredSetting(tdb, BASE_COLOR_USE_SEQUENCE);
 char *specCopy = cloneString(spec);
 char *words[3];
 int nwords = chopByWhite(specCopy, words, ArraySize(words));
 
 char acc[512];
 
 char title[1024];
 safef(title, sizeof title, "%s vs Genomic [%s]", mi->seqId, track);
 alnModernStart(title);
 
 /* Look up alignment and sequence in database.  Always get sequence