f6b440a99776b79f399a2646442a5e079723cb0e
markd
  Sun Feb 6 13:49:28 2022 -0800
don't crash if geneName or color not found for a genePred

diff --git src/hg/utils/genePredToBigGenePred/genePredToBigGenePred.c src/hg/utils/genePredToBigGenePred/genePredToBigGenePred.c
index 3678f35..d656223 100644
--- src/hg/utils/genePredToBigGenePred/genePredToBigGenePred.c
+++ src/hg/utils/genePredToBigGenePred/genePredToBigGenePred.c
@@ -92,57 +92,67 @@
 bgp.score = 0;
 if (scoreHash)
     {
     char *val = hashFindVal(scoreHash, gp->name);
     if (val != NULL)
         bgp.score = sqlUnsigned(val);
     }
 bgp.strand[0] = gp->strand[0];
 bgp.strand[1] = gp->strand[1];
 bgp.thickStart = gp->cdsStart;
 bgp.thickEnd = gp->cdsEnd;
 bgp.itemRgb = 0; // BLACK
 if (colorsHash)
     {
     struct rgbColor *color = hashFindVal(colorsHash, gp->name);
+    if (color == NULL)
+        warn("Warning: no color found for %s", gp->name);
+    else
+        {
         bgp.itemRgb = ( ((color->r) & 0xff) << 16) |
             (((color->g) & 0xff) << 8) |
             ((color->b) & 0xff);
         }
+    }
 bgp.blockCount = gp->exonCount;
 bgp.blockSizes = (unsigned *)blockSizes;
 bgp.chromStarts = (unsigned *)blockStarts;
 int ii;
 for(ii=0; ii < bgp.blockCount; ii++)
     {
     blockStarts[ii] = gp->exonStarts[ii] - bgp.chromStart;
     blockSizes[ii] = gp->exonEnds[ii] - gp->exonStarts[ii];
     }
     
 bgp.name2 = gp->name2;
 bgp.cdsStartStat = gp->cdsStartStat;
 bgp.cdsEndStat = gp->cdsEndStat;
 bgp.exonFrames = gp->exonFrames;
 bgp.type = NULL;
 bgp.geneName = gp->name;
 bgp.geneName2 = gp->name2;
 if (geneHash)
     {
     struct geneNames *gn = hashFindVal(geneHash, gp->name);
+    if (gn == NULL)
+        warn("Warning: no gene name found for %s", gp->name);
+    else
+        {
         bgp.geneName = gn->name;
         bgp.geneName2 = gn->name2;
         }
+    }
 
 bgp.geneType = NULL;
 
 bigGenePredOutput(&bgp, fp, '\t', '\n');
 }
 
 void genePredToBigGenePred(char *genePredFile, char *bigGeneOutput)
 /* genePredToBigGenePred - converts genePred or genePredExt to bigGenePred. */
 {
 struct genePred *gp;
 if (isKnown)
     gp = genePredKnownLoadAll(genePredFile) ;
 else
     gp = genePredExtLoadAll(genePredFile) ;