c13d7b1af23d1e1a6f015953536e2d74a467fb16
braney
  Wed Apr 22 17:25:40 2026 -0700
hgc bigBed click: skip intervals that fail to quickLift remap instead of errAborting with an out-of-bounds read. The errAbort message printed fields[3] on a stack-allocated fields[bedSize+seq1Seq2Fields]; for a bigBed3 (e.g. GIAB problematicRegions) that's one past the end, producing garbled binary text in the warning dialog. More importantly, for bedSize==3 there is no name filter before the remap, so every interval in the window was remapped and any single failure aborted the whole page. Match the hgTracks behavior (bigBedTrack.c: continue on NULL) so unmappable items are silently dropped and the clicked item still renders. refs #36335

diff --git src/hg/hgc/bigBedClick.c src/hg/hgc/bigBedClick.c
index fbdc6fd038d..97023a9a923 100644
--- src/hg/hgc/bigBedClick.c
+++ src/hg/hgc/bigBedClick.c
@@ -487,31 +487,31 @@
             extraFieldCount = restCount - restBedFields;
             extraFieldPairs = getExtraFields(tdb, extraFields, extraFieldCount);
             }
         }
     int bbFieldCount = bigBedIntervalToRow(bb, chrom, startBuf, endBuf, fields,
                                            bedSize+seq1Seq2Fields);
     if (bbFieldCount != bedSize+seq1Seq2Fields)
         {
         errAbort("Disagreement between trackDb field count (%d) and %s fieldCount (%d)",
 		bedSize, fileName, bbFieldCount);
 	}
     struct bed *bed = NULL;
     if (quickLiftFile)
         {
         if ((bed = quickLiftIntervalsToBed(bbi, chainHash, bb)) == NULL)
-            errAbort("can't port %s",fields[3]);
+            continue;
         }
     else
         {
         bed = bedLoadN(fields, bedSize);
         }
     if ((bed == NULL) || (bedSize >= 6 && scoreFilter && bed->score < minScore))
         continue;
     if (!(bed->chromStart == start && bed->chromEnd == end))
 	continue;
 
     // if there are extra fields, load them up because we may want to use them in URL:
     itemForUrl = getIdInUrl(tdb, item);
     printCustomUrlWithFields(tdb, bed->name, bed->name, item == itemForUrl, extraFieldPairs);
     if (itemForUrl)
         printIframe(tdb, itemForUrl);