c206d0956d6d774d34719adba4cc9bdd644efe5b
braney
  Thu May 1 08:17:09 2014 -0700
check for load failures in multiWig
diff --git src/hg/hgTracks/multiWig.c src/hg/hgTracks/multiWig.c
index e3e7966..47f6a5c 100644
--- src/hg/hgTracks/multiWig.c
+++ src/hg/hgTracks/multiWig.c
@@ -290,62 +290,69 @@
 struct wigGraphOutput *wgo = setUpWgo(xOff, yOff, width, tg->height, numTracks, wigCart, hvg);
 
 /* Cope with autoScale and stacked bars - we do it here rather than in the child tracks, so that
  * all children can be on same scale. */
 double minVal, maxVal;
 
 /* Force load of all predraw arrays so can do calcs. Build up list, and then
  * figure out max/min.  No worries about multiple loading, the loaders protect
  * themselves. */
 struct slRef *refList = NULL;
 for (subtrack = tg->subtracks; subtrack != NULL; subtrack = subtrack->next)
     {
     if (isSubtrackVisible(subtrack))
 	{
 	struct preDrawContainer *pre = subtrack->loadPreDraw(subtrack, seqStart, seqEnd, width);
+
+	if (pre != NULL)  // pre maybe null if the load fails
+	    {
 	    preDrawWindowFunction(pre->preDraw, pre->preDrawSize, wigCart->windowingFunction,
 		    wigCart->transformFunc);
 	    preDrawSmoothing(pre->preDraw, pre->preDrawSize, wigCart->smoothingWindow);
 	    pre->smoothingDone = TRUE;
 	    refAdd(&refList, pre);
 	    }
 	}
+    }
 slReverse(&refList);
 minMaxVals(refList, &minVal, &maxVal, wigCart->windowingFunction,  wigCart->alwaysZero, wgo->yOffsets);
 slFreeList(&refList);
 
 if (!wigCart->autoScale)
     {
     minVal = wigCart->minY;
     maxVal = wigCart->maxY;
     }
 
 /* Loop through again setting up the wigCarts of the children to have minY/maxY for
  * our limits and autoScale off. */
 for (subtrack = tg->subtracks; subtrack != NULL; subtrack = subtrack->next)
     {
     if (!isSubtrackVisible(subtrack))
 	continue;
 
     struct wigCartOptions *wigCart = subtrack->extraUiData;
     wigCart->minY = minVal;
     wigCart->maxY = maxVal;
     wigCart->autoScale = wiggleScaleManual;
     struct preDrawContainer *pre = subtrack->preDrawContainer;
+
+    if (pre != NULL)  // pre maybe null if the load fails
+	{
 	pre->graphUpperLimit = maxVal;
 	pre->graphLowerLimit = minVal;
-    
+	}
     }
 
 int numTrack = 0;
 for (subtrack = tg->subtracks; subtrack != NULL; subtrack = subtrack->next)
     {
     if (isSubtrackVisible(subtrack))
 	{
         if (!subtrack->networkErrMsg || !errMsgShown)
 	    {
 	    if (subtrack->networkErrMsg)
 	       errMsgShown = TRUE;
 	    wgo->numTrack = numTrack++;
 	    subtrack->wigGraphOutput = wgo;
 	    int height = subtrack->totalHeight(subtrack, vis);
 	    hvGfxSetClip(hvg, xOff, y, width, height);