From c49ba444c2c7a2369f2b1aeaa6950cbf1f301790 Mon Sep 17 00:00:00 2001 From: gayoung93 Date: Fri, 22 Jul 2022 16:50:18 +0900 Subject: [PATCH 1/2] add break condition to making cigar string --- ksw.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ksw.c b/ksw.c index 9793e5eb..676e3101 100644 --- a/ksw.c +++ b/ksw.c @@ -590,7 +590,11 @@ int ksw_global2(int qlen, const uint8_t *query, int tlen, const uint8_t *target, uint32_t *cigar = 0, tmp; i = tlen - 1; k = (i + w + 1 < qlen? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { - which = z[(long)i * n_col + (k - (i > w? i - w : 0))] >> (which<<1) & 3; + int j_beg = i > w? i - w : 0; + int j_end = i + w + 1 < qlen? i + w + 1 : qlen; + j = (k - j_beg); + if (j < j_beg || j >= j_end) break; + which = z[(long)i * n_col + j] >> (which<<1) & 3; if (which == 0) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 0, 1), --i, --k; else if (which == 1) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 2, 1), --i; else cigar = push_cigar(&n_cigar, &m_cigar, cigar, 1, 1), --k; From 2855ed89cdb7a00e01f49ad692d98ab74859443c Mon Sep 17 00:00:00 2001 From: gayoung93 Date: Tue, 26 Jul 2022 18:10:00 +0900 Subject: [PATCH 2/2] fix condition --- ksw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ksw.c b/ksw.c index 676e3101..d099a4b3 100644 --- a/ksw.c +++ b/ksw.c @@ -593,7 +593,7 @@ int ksw_global2(int qlen, const uint8_t *query, int tlen, const uint8_t *target, int j_beg = i > w? i - w : 0; int j_end = i + w + 1 < qlen? i + w + 1 : qlen; j = (k - j_beg); - if (j < j_beg || j >= j_end) break; + if (j >= (j_end-j_beg)) break; which = z[(long)i * n_col + j] >> (which<<1) & 3; if (which == 0) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 0, 1), --i, --k; else if (which == 1) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 2, 1), --i;