Code

xdl_merge(): fix an off-by-one bug
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Wed, 29 Nov 2006 23:24:32 +0000 (00:24 +0100)
committerJunio C Hamano <junkio@cox.net>
Sun, 3 Dec 2006 01:28:19 +0000 (17:28 -0800)
The line range is i1 .. (i1 + chg1 - 1), not i1 .. (i1 + chg1).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
xdiff/xmerge.c

index 286f177b542811f67fc77f633445a12cb1b5f198..3f5dc87fd242aff10399e4318059290c58462ed1 100644 (file)
@@ -194,11 +194,11 @@ static int xdl_refine_conflicts(xdfenv_t *xe1, xdfenv_t *xe2, xdmerge_t *m,
                 * we have a very simple mmfile structure.
                 */
                t1.ptr = (char *)xe1->xdf2.recs[m->i1]->ptr;
-               t1.size = xe1->xdf2.recs[m->i1 + m->chg1]->ptr
-                       + xe1->xdf2.recs[m->i1 + m->chg1]->size - t1.ptr;
-               t2.ptr = (char *)xe2->xdf2.recs[m->i1]->ptr;
-               t2.size = xe2->xdf2.recs[m->i1 + m->chg1]->ptr
-                       + xe2->xdf2.recs[m->i1 + m->chg1]->size - t2.ptr;
+               t1.size = xe1->xdf2.recs[m->i1 + m->chg1 - 1]->ptr
+                       + xe1->xdf2.recs[m->i1 + m->chg1 - 1]->size - t1.ptr;
+               t2.ptr = (char *)xe2->xdf2.recs[m->i2]->ptr;
+               t2.size = xe2->xdf2.recs[m->i2 + m->chg2 - 1]->ptr
+                       + xe2->xdf2.recs[m->i2 + m->chg2 - 1]->size - t2.ptr;
                if (xdl_do_diff(&t1, &t2, xpp, &xe) < 0)
                        return -1;
                if (xdl_change_compact(&xe.xdf1, &xe.xdf2, xpp->flags) < 0 ||