summaryrefslogtreecommitdiff
path: root/xdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xdiff')
-rw-r--r--xdiff/xdiffi.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
index 95b037ee38..61deed8d4b 100644
--- a/xdiff/xdiffi.c
+++ b/xdiff/xdiffi.c
@@ -504,25 +504,25 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) {
}
} while (grpsiz != ix - ixs);
- /*
- * Try to move back the possibly merged group of changes, to match
- * the recorded position in the other file.
- */
- while (ixref < ix) {
- rchg[--ixs] = 1;
- rchg[--ix] = 0;
- while (rchgo[--ixo]);
- }
-
- /*
- * If a group can be moved back and forth, see if there is a
- * blank line in the moving space. If there is a blank line,
- * make sure the last blank line is the end of the group.
- *
- * As we already shifted the group forward as far as possible
- * in the earlier loop, we need to shift it back only if at all.
- */
- if ((flags & XDF_COMPACTION_HEURISTIC) && blank_lines) {
+ if (ixref < ix) {
+ /*
+ * Try to move back the possibly merged group of changes, to match
+ * the recorded position in the other file.
+ */
+ while (ixref < ix) {
+ rchg[--ixs] = 1;
+ rchg[--ix] = 0;
+ while (rchgo[--ixo]);
+ }
+ } else if ((flags & XDF_COMPACTION_HEURISTIC) && blank_lines) {
+ /*
+ * The group can be slid up to make its last line a
+ * blank line. Do so.
+ *
+ * As we already shifted the group forward as far as
+ * possible in the earlier loop, we need to shift it
+ * back only if at all.
+ */
while (ixs > 0 &&
!is_blank_line(recs, ix - 1, flags) &&
recs_match(recs, ixs - 1, ix - 1, flags)) {