Imported Upstream version 0.2.0
[tabix.git] / TabixReader.java
index acaff24ef0349b91f393093d5151b6bc32ca1a9d..752f71c930daa53ec6801358ec19e50064cc2233 100644 (file)
@@ -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;