]> git.neil.brown.name Git - wiggle.git/commitdiff
Browse: make sure 'X' doesn't loop forever searching backwards.
authorNeilBrown <neilb@suse.de>
Tue, 20 Aug 2013 05:12:42 +0000 (15:12 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 20 Aug 2013 05:12:42 +0000 (15:12 +1000)
it did once..

Signed-off-by: NeilBrown <neilb@suse.de>
vpatch.c

index 1f510e636f38509ed50a491003c7ed65cce2f6fe..f93b52288511ab8d07a21cbc7ecdbbccc672524c 100644 (file)
--- a/vpatch.c
+++ b/vpatch.c
@@ -2261,6 +2261,8 @@ static int merge_window(struct plist *p, FILE *f, int reverse, int replace,
                                    && ci.merger[tpos.p.m].type != Unchanged)
                                        do_mark = 1;
                                e = prev_melmnt(&tpos.p, fm, fb, fa, ci.merger);
+                               if (tpos.p.m < 0)
+                                       break;
                        } while (!ends_line(e) ||
                                 visible(mode & (RESULT|AFTER), ci.merger, &tpos) < 0);
                        tpos = pos;
@@ -2274,6 +2276,8 @@ static int merge_window(struct plist *p, FILE *f, int reverse, int replace,
                                                        ci.merger[tpos.p.m].oldtype;
                                }
                                e = prev_melmnt(&tpos.p, fm, fb, fa, ci.merger);
+                               if (tpos.p.m < 0)
+                                       break;
                        } while (!ends_line(e) ||
                                 visible(mode & (RESULT|AFTER), ci.merger, &tpos) < 0);
                        p->conflicts = isolate_conflicts(