[PATCH 2 of 6 STABLE V2] bdiff: fold in shift calculation in normalize

Matt Mackall mpm at selenic.com
Mon Apr 25 18:10:18 EDT 2016


# HG changeset patch
# User Matt Mackall <mpm at selenic.com>
# Date 1461293191 18000
#      Thu Apr 21 21:46:31 2016 -0500
# Branch stable
# Node ID e6294e0367777d1cfd5121db40559e89a7e71b68
# Parent  6bfbbd0aaf413b9a15ef491ba5f37eba3ece1caf
bdiff: fold in shift calculation in normalize

This just makes the code harder to read without any performance
advantage. We're going to make the check here more complex, let's make
it simpler first.

diff -r 6bfbbd0aaf41 -r e6294e036777 mercurial/bdiff.c
--- a/mercurial/bdiff.c	Thu Apr 21 21:37:13 2016 -0500
+++ b/mercurial/bdiff.c	Thu Apr 21 21:46:31 2016 -0500
@@ -259,22 +259,18 @@
 	/* normalize the hunk list, try to push each hunk towards the end */
 	for (curr = base->next; curr; curr = curr->next) {
 		struct hunk *next = curr->next;
-		int shift = 0;
 
 		if (!next)
 			break;
 
 		if (curr->a2 == next->a1 || curr->b2 == next->b1)
-			while (curr->a2 + shift < an && curr->b2 + shift < bn
-			       && !cmp(a + curr->a2 + shift,
-				       b + curr->b2 + shift))
-				shift++;
-		if (!shift)
-			continue;
-		curr->b2 += shift;
-		next->b1 += shift;
-		curr->a2 += shift;
-		next->a1 += shift;
+			while (curr->a2 < an && curr->b2 < bn
+			       && !cmp(a + curr->a2, b + curr->b2)) {
+				curr->a2++;
+				next->a1++;
+				curr->b2++;
+				next->b1++;
+			}
 	}
 
 	for (curr = base->next; curr; curr = curr->next)


More information about the Mercurial-devel mailing list