Browse Source

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

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
maint
Junio C Hamano 9 years ago
parent
commit
a52fb9b8f3
  1. 8
      t/t4033-diff-patience.sh
  2. 2
      xdiff/xpatience.c
  3. 6
      xdiff/xutils.c

8
t/t4033-diff-patience.sh

@ -5,6 +5,14 @@ test_description='patience diff algorithm' @@ -5,6 +5,14 @@ test_description='patience diff algorithm'
. ./test-lib.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_unique "patience"

2
xdiff/xpatience.c

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

6
xdiff/xutils.c

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

/*

Loading…
Cancel
Save