10ec9a824b3a05f8fbd73deb1db8add870a3535e
angie
  Wed Dec 11 10:11:11 2013 -0800
Fixing bad assumption that htcCdnaAli's aliTable is a track.  It may be "all_mrna".  Fixes #12322
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 9204c60..679c251 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -6974,32 +6974,34 @@
     struct sqlConnection *conn = hAllocConn(database);
     unsigned retId = 0;
     safef(accTmp, sizeof accTmp, "bz-%s", acc);
     if (hRnaSeqAndIdx(accTmp, &rnaSeq, &retId, conn) == -1)
         rnaSeq = hRnaSeq(database, acc);
     hFreeConn(&conn);
     }
 else if (sameString("HInvGeneMrna", aliTable))
     {
     /* get RNA accession for the gene id in the alignment */
     sqlSafef(query, sizeof query, "select mrnaAcc from HInv where geneId='%s'", acc);
     rnaSeq = hRnaSeq(database, sqlQuickString(conn, query));
     }
 else
     {
-    struct trackDb *tdb = hashMustFindVal(trackHash, aliTable);
-    char *cdnaTable = trackDbSetting(tdb, "cdnaTable");
+    char *cdnaTable = NULL;
+    struct trackDb *tdb = hashFindVal(trackHash, aliTable);
+    if (tdb != NULL)
+	cdnaTable = trackDbSetting(tdb, "cdnaTable");
     if (isNotEmpty(cdnaTable) && hTableExists(database, cdnaTable))
 	rnaSeq = hGenBankGetMrna(database, acc, cdnaTable);
     else
 	rnaSeq = hRnaSeq(database, acc);
     }
 
 if (startsWith("xeno", aliTable))
     showSomeAlignment(psl, rnaSeq, gftDnaX, 0, rnaSeq->size, NULL, cdsStart, cdsEnd);
 else
     showSomeAlignment(psl, rnaSeq, gftDna, 0, rnaSeq->size, NULL, cdsStart, cdsEnd);
 hFreeConn(&conn);
 }
 
 void htcCdnaAliInWindow(char *acc)
 /* Show part of alignment in browser window for accession. */
@@ -7105,32 +7107,34 @@
         char *words[3];
         int nwords = chopByWhite(specCopy, words, ArraySize(words));
         if ((nwords != ArraySize(words)) || !sameString(words[0], "extFile"))
             errAbort("invalid %s track setting: %s", BASE_COLOR_USE_SEQUENCE, spec);
         rnaSeq = hDnaSeqGet(database, acc, words[1], words[2]);
 	}
     else if (sameString("HInvGeneMrna", aliTable))
 	{
 	/* get RNA accession for the gene id in the alignment */
 	sqlSafef(query, sizeof(query), "select mrnaAcc from HInv where geneId='%s'",
 	      acc);
 	rnaSeq = hRnaSeq(database, sqlQuickString(conn, query));
 	}
     else
 	{
-	struct trackDb *tdb = hashMustFindVal(trackHash, aliTable);
-	char *cdnaTable = trackDbSetting(tdb, "cdnaTable");
+	char *cdnaTable = NULL;
+	struct trackDb *tdb = hashFindVal(trackHash, aliTable);
+	if (tdb != NULL)
+	    cdnaTable = trackDbSetting(tdb, "cdnaTable");
 	if (isNotEmpty(cdnaTable) && hTableExists(database, cdnaTable))
 	    rnaSeq = hGenBankGetMrna(database, acc, cdnaTable);
 	else
 	    rnaSeq = hRnaSeq(database, acc);
 	}
     }
 /* Get partial psl for part of alignment in browser window: */
 if (wholePsl->tStart >= winStart && wholePsl->tEnd <= winEnd)
     partPsl = wholePsl;
 else
     partPsl = pslTrimToTargetRange(wholePsl, winStart, winEnd);
 
 if (startsWith("xeno", aliTable))
     errAbort("htcCdnaAliInWindow does not support translated alignments.");
 else