X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=tabix.git;a=blobdiff_plain;f=TabixReader.java;h=752f71c930daa53ec6801358ec19e50064cc2233;hp=acaff24ef0349b91f393093d5151b6bc32ca1a9d;hb=36e5c2e93cc97d22f8b33768602d511697fa1adf;hpb=c70c92b7a385548d8e670638a93a083401f49e4d diff --git a/TabixReader.java b/TabixReader.java index acaff24..752f71c 100644 --- a/TabixReader.java +++ b/TabixReader.java @@ -93,6 +93,8 @@ public class TabixReader private static int reg2bins(final int beg, final int _end, final int[] list) { int i = 0, k, end = _end; + if (beg >= end) return 0; + if (end >= 1<<29) end = 1<<29; --end; list[i++] = 0; for (k = 1 + (beg>>26); k <= 1 + (end>>26); ++k) list[i++] = k; @@ -320,7 +322,9 @@ public class TabixReader TIndex idx = mIndex[tid]; int[] bins = new int[MAX_BIN]; int i, l, n_off, n_bins = reg2bins(beg, end, bins); - min_off = (beg>>TAD_LIDX_SHIFT >= idx.l.length)? idx.l[idx.l.length-1] : idx.l[beg>>TAD_LIDX_SHIFT]; + if (idx.l.length > 0) + min_off = (beg>>TAD_LIDX_SHIFT >= idx.l.length)? idx.l[idx.l.length-1] : idx.l[beg>>TAD_LIDX_SHIFT]; + else min_off = 0; for (i = n_off = 0; i < n_bins; ++i) { if ((chunks = idx.b.get(bins[i])) != null) n_off += chunks.length;