Comments
Patch
@@ -151,7 +151,7 @@ static int longest_match(struct bdiff_li
if (a2 - a1 > 30000)
a1 = a2 - 30000;
- half = (a1 + a2) / 2;
+ half = (a1 + a2 - 1) / 2;
for (i = a1; i < a2; i++) {
/* skip all lines in b after the current block */
@@ -177,7 +177,7 @@ static int longest_match(struct bdiff_li
/* best match so far? we prefer matches closer
to the middle to balance recursion */
- if (k > mk || (k == mk && (i <= mi || i < half))) {
+ if (k > mk || (k == mk && (i <= mi || i <= half))) {
mi = i;
mj = j;
mk = k;
@@ -88,7 +88,7 @@ print("Diff 1 to 3 lines - preference fo
showdiff('a\n', 'a\n' * 3)
print("Diff 1 to 5 lines - preference for adding / removing at the end of sequences:")
showdiff('a\n', 'a\n' * 5)
-print("Diff 3 to 1 lines - preference for adding / removing at the end of sequences:")
+print("Diff 3 to 1 lines - preference for balanced recursion:")
showdiff('a\n' * 3, 'a\n')
-print("Diff 5 to 1 lines - this diff seems weird:")
+print("Diff 5 to 1 lines - preference for balanced recursion:")
showdiff('a\n' * 5, 'a\n')
@@ -67,16 +67,17 @@ showdiff(
'a\na\na\na\na\n'):
'a\n'
2 2 '' -> 'a\na\na\na\n'
-Diff 3 to 1 lines - preference for adding / removing at the end of sequences:
+Diff 3 to 1 lines - preference for balanced recursion:
showdiff(
'a\na\na\n',
'a\n'):
+ 0 2 'a\n' -> ''
'a\n'
- 2 6 'a\na\n' -> ''
-Diff 5 to 1 lines - this diff seems weird:
+ 4 6 'a\n' -> ''
+Diff 5 to 1 lines - preference for balanced recursion:
showdiff(
'a\na\na\na\na\n',
'a\n'):
- 0 2 'a\n' -> ''
+ 0 4 'a\na\n' -> ''
'a\n'
- 4 10 'a\na\na\n' -> ''
+ 6 10 'a\na\n' -> ''