diff --git a/align.c b/align.c index 21808b9..c3b04d3 100644 --- a/align.c +++ b/align.c @@ -613,6 +613,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int if (++l > opt->min_cnt) { l = rs0 - x > qs0 - y? rs0 - x : qs0 - y; rs1 = rs0 - l, qs1 = qs0 - l; + if (rs1 < 0) rs1 = 0; // not strictly necessary; better have this guard for explicit break; } } @@ -626,6 +627,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int l = l < rs? l : rs; rs1 = rs1 > rs - l? rs1 : rs - l; rs0 = rs0 < rs1? rs0 : rs1; + rs0 = rs0 < rs? rs0 : rs; } else rs0 = rs, qs0 = qs; // compute re0 and qe0 re0 = (int32_t)a[r->as + r->cnt - 1].x + 1; @@ -665,7 +667,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int assert(re0 > rs0); tseq = (uint8_t*)kmalloc(km, re0 - rs0); - if (qs > 0 && rs > 0) { // left extension + if (qs > 0 && rs > 0) { // left extension; probably the condition can be changed to "qs > qs0 && rs > rs0" qseq = &qseq0[rev][qs0]; mm_idx_getseq(mi, rid, rs0, rs, tseq); mm_seq_rev(qs - qs0, qseq); diff --git a/main.c b/main.c index a7a7fea..9f52bb7 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ #include "mmpriv.h" #include "ketopt.h" -#define MM_VERSION "2.14-r894-dirty" +#define MM_VERSION "2.14-r904-dirty" #ifdef __linux__ #include