Changelog entry marking the package released.
[tabix.git] / TabixReader.java
index 40d395120e4df26cbf04a7667fba2775a921a05b..0d359c5968ef218020b22bf3394fb049da16fcf6 100644 (file)
@@ -217,7 +217,7 @@ public class TabixReader
                int[] ret = new int[3];
                colon = reg.indexOf(':'); hyphen = reg.indexOf('-');
                chr = colon >= 0? reg.substring(0, colon) : reg;
-               ret[1] = colon >= 0? Integer.parseInt(reg.substring(colon+1, hyphen)) - 1 : 0;
+               ret[1] = colon >= 0? Integer.parseInt(reg.substring(colon+1, hyphen >= 0? hyphen : reg.length())) - 1 : 0;
                ret[2] = hyphen >= 0? Integer.parseInt(reg.substring(hyphen+1)) : 0x7fffffff;
                ret[0] = chr2tid(chr);
                return ret;
@@ -231,7 +231,7 @@ public class TabixReader
                        if (col == mSc) {
                                intv.tid = chr2tid(s.substring(beg, end));
                        } else if (col == mBc) {
-                               intv.beg = intv.end = Integer.parseInt(s.substring(beg, end));
+                               intv.beg = intv.end = Integer.parseInt(s.substring(beg, end==-1?s.length():end));
                                if ((mPreset&0x10000) != 0) ++intv.end;
                                else --intv.beg;
                                if (intv.beg < 0) intv.beg = 0;
@@ -339,6 +339,7 @@ public class TabixReader
                                for (int j = 0; j < chunks.length; ++j)
                                        if (less64(min_off, chunks[j].v))
                                                off[n_off++] = new TPair64(chunks[j]);
+               if (n_off == 0) return null;
                Arrays.sort(off, 0, n_off);
                // resolve completely contained adjacent blocks
                for (i = 1, l = 0; i < n_off; ++i) {
@@ -385,7 +386,7 @@ public class TabixReader
                                        System.out.println(s);
                        } else { // a region is specified; random access
                                TabixReader.Iterator iter = tr.query(args[1]); // get the iterator
-                               while ((s = iter.next()) != null)
+                               while (iter != null && (s = iter.next()) != null)
                                        System.out.println(s);
                        }
                } catch (IOException e) {