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

Matt Mackall mpm at selenic.com
Sat Apr 23 11:41:16 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 48c7e086444c9dc7a80fa3d24b282ad345c07a33
# Parent  f2310bbf12db65ebf1c9e150ae784fa2ef630c26
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 f2310bbf12db -r 48c7e086444c 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