From 5d372cef65ca2a3550629b4a1428b1b256133738 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Thu, 31 Jan 2013 16:39:24 -0500 Subject: [PATCH] bugfix: wrong B-tree comparison --- bwamem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bwamem.c b/bwamem.c index 2a35fe7..99b604e 100644 --- a/bwamem.c +++ b/bwamem.c @@ -57,8 +57,8 @@ int smem_next(smem_i *itr) #include "kbtree.h" -#define chain_lt(a, b) ((a).pos < (b).pos) -KBTREE_INIT(chn, memchain1_t, chain_lt) +#define chain_cmp(a, b) ((a).pos - (b).pos) +KBTREE_INIT(chn, memchain1_t, chain_cmp) static int test_and_merge(const memopt_t *opt, memchain1_t *c, const memseed_t *p) { @@ -66,7 +66,7 @@ static int test_and_merge(const memopt_t *opt, memchain1_t *c, const memseed_t * const memseed_t *last = &c->seeds[c->n-1]; qend = last->qbeg + last->len; rend = last->rbeg + last->len; - if (p->qbeg > c->seeds[0].qbeg && p->qbeg + p->len < qend && p->rbeg > c->seeds[0].rbeg && p->rbeg + p->len < rend) + if (p->qbeg >= c->seeds[0].qbeg && p->qbeg + p->len <= qend && p->rbeg >= c->seeds[0].rbeg && p->rbeg + p->len <= rend) return 1; // contained seed; do nothing x = p->qbeg - last->qbeg; // always positive y = p->rbeg - last->rbeg;