Merge branch 'js/ignore-space-at-eol'

An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.

* js/ignore-space-at-eol:
  diff: fix a double off-by-one with --ignore-space-at-eol
  diff: demonstrate a bug with --patience and --ignore-space-at-eol
This commit is contained in:
Junio C Hamano 2016-07-25 14:13:35 -07:00
commit f2cfb8fcc9
3 changed files with 13 additions and 3 deletions

View file

@ -5,6 +5,14 @@ test_description='patience diff algorithm'
. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-diff-alternative.sh . "$TEST_DIRECTORY"/lib-diff-alternative.sh
test_expect_success '--ignore-space-at-eol with a single appended character' '
printf "a\nb\nc\n" >pre &&
printf "a\nbX\nc\n" >post &&
test_must_fail git diff --no-index \
--patience --ignore-space-at-eol pre post >diff &&
grep "^+.*X" diff
'
test_diff_frobnitz "patience" test_diff_frobnitz "patience"
test_diff_unique "patience" test_diff_unique "patience"

View file

@ -1,6 +1,6 @@
/* /*
* LibXDiff by Davide Libenzi ( File Differential Library ) * LibXDiff by Davide Libenzi ( File Differential Library )
* Copyright (C) 2003-2009 Davide Libenzi, Johannes E. Schindelin * Copyright (C) 2003-2016 Davide Libenzi, Johannes E. Schindelin
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View file

@ -200,8 +200,10 @@ int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
return 0; return 0;
} }
} else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) { } else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) {
while (i1 < s1 && i2 < s2 && l1[i1++] == l2[i2++]) while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
; /* keep going */ i1++;
i2++;
}
} }
/* /*