From 73ddf18dc3144c20b0eb88accd69d1b8b851d855 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Fri, 15 May 2015 13:55:39 +0100 Subject: [PATCH] Another bug fix in diff implementation --- src/diff.hh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/diff.hh b/src/diff.hh index da1328e2..fe679bd6 100644 --- a/src/diff.hh +++ b/src/diff.hh @@ -97,7 +97,7 @@ SnakeLen find_middle_snake(Iterator a, int N, Iterator b, int M, if ((delta % 2 == 0) and -D <= k1 and k1 <= D) { if (V1[k1] + V2[k2] >= N) - return { { N - p.u, M - p.v, N - p.x , M - p.y } , 2 * D };// return last snake on reverse path + return { { N - p.u, M - p.v, N - p.x , M - p.y, p.add } , 2 * D };// return last snake on reverse path } } } @@ -138,11 +138,7 @@ void find_diff_rec(Iterator a, int offA, int lenA, } else if (middle_snake.d == 1) { - int diag = 0; - while (eq(a[offA + diag], b[offB + diag])) - ++diag; - - if (diag != 0) + if (int diag = middle_snake.x - (middle_snake.add ? 0 : 1)) diffs.push_back({Diff::Keep, diag, 0}); if (middle_snake.add)