31faf99a48eae623ca44df250f1808673ee8d536
braney
  Wed Oct 14 06:59:27 2020 -0700
fix one place where the difference between a type bigBed # can break if
the actual bigBed has fewer columns

diff --git src/hg/hgTracks/bedTrack.c src/hg/hgTracks/bedTrack.c
index 4642115..fef9c3d 100644
--- src/hg/hgTracks/bedTrack.c
+++ src/hg/hgTracks/bedTrack.c
@@ -233,30 +233,32 @@
 void loadBed9(struct track *tg)
 /* Convert bed 9 info in window to linked feature.  (to handle itemRgb)*/
 {
 struct trackDb *tdb = tg->tdb;
 struct bed *bed;
 struct linkedFeatures *lfList = NULL, *lf;
 int scoreMin = atoi(trackDbSettingClosestToHomeOrDefault(tdb, "scoreMin", "0"));
 int scoreMax = atoi(trackDbSettingClosestToHomeOrDefault(tdb, "scoreMax", "1000"));
 boolean useItemRgb = FALSE;
 
 useItemRgb = bedItemRgb(tdb);
 
 if (tg->isBigBed)
     { // avoid opening an unneeded db connection for bigBed; required not to use mysql for parallel fetch tracks
     struct bbiFile *bbi = fetchBbiForTrack(tg);
+    if (bbi->fieldCount < 9)
+        errAbort("track %s has a bigBed being read as a bed9 that has %d columns.", tg->track, bbi->fieldCount);
     bigBedLabelCalculateFields(cart, tg->tdb, bbi,  &tg->labelColumns);
     bigBedAddLinkedFeaturesFrom(tg, chromName, winStart, winEnd,
           scoreMin, scoreMax, useItemRgb, 9, &lfList);
     }
 else
     {
     struct sqlConnection *conn = hAllocConnTrack(database, tdb);
     struct sqlResult *sr;
     char **row;
     int rowOffset;
     char *scoreFilterClause = getScoreFilterClause(cart, tg->tdb,NULL);
     if (scoreFilterClause != NULL)
 	{
 	sr = hRangeQuery(conn, tg->table, chromName, winStart, winEnd,scoreFilterClause, &rowOffset);
 	freeMem(scoreFilterClause);