add protect to array index overflow
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerUtil.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerUtil.java
index 9dc1dde..59cc3b0 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerUtil.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerUtil.java
@@ -1,6 +1,7 @@
package edu.uci.ics.genomix.type;
public class KmerUtil {
+ public static final String empty = "";
public static int getByteNumFromK(int k) {
int x = k / 4;
@@ -18,6 +19,9 @@
public static String recoverKmerFrom(int k, byte[] keyData, int keyStart, int keyLength) {
StringBuilder strKmer = new StringBuilder();
int byteId = keyStart + keyLength - 1;
+ if (byteId < 0){
+ return empty;
+ }
byte currentbyte = keyData[byteId];
for (int geneCount = 0; geneCount < k; geneCount++) {
if (geneCount % 4 == 0 && geneCount > 0) {
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index 493191a..28c6c58 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -107,7 +107,7 @@
int kmerlength1 = readInt(b1, s1);
int kmerlength2 = readInt(b2, s2);
if (kmerlength1 == kmerlength2) {
- compareBytes(b1, s1 + LEAD_BYTES, l1 - LEAD_BYTES, b2, s2 + LEAD_BYTES, l2 - LEAD_BYTES);
+ return compareBytes(b1, s1 + LEAD_BYTES, l1 - LEAD_BYTES, b2, s2 + LEAD_BYTES, l2 - LEAD_BYTES);
}
return kmerlength1 - kmerlength2;
}