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);