Fix severe breakage in "git-apply --whitespace=fix"

735c674 (Trailing whitespace and no newline fix, 2009-07-22) completely
broke --whitespace=fix, causing it to lose all the empty lines in a patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2009-07-25 01:29:20 -07:00
Родитель 01ae841ccf
Коммит 422a82f213
2 изменённых файлов: 9 добавлений и 5 удалений

Просмотреть файл

@ -154,7 +154,9 @@ create_patch () {
index e69de29..8bd6648 100644
--- a/target
+++ b/target
@@ -0,0 +1 @@
@@ -0,0 +1,3 @@
+An empty line follows
+
+A line with trailing whitespace and no newline_
\ No newline at end of file
EOF
@ -162,8 +164,10 @@ create_patch () {
test_expect_success 'trailing whitespace & no newline at the end of file' '
>target &&
create_patch | git apply --whitespace=fix - &&
grep "newline$" target
create_patch >patch-file &&
git apply --whitespace=fix patch-file &&
grep "newline$" target &&
grep "^$" target
'
test_done

4
ws.c
Просмотреть файл

@ -262,10 +262,10 @@ int ws_fix_copy(char *dst, const char *src, int len, unsigned ws_rule, int *erro
* Strip trailing whitespace
*/
if (ws_rule & WS_TRAILING_SPACE) {
if (1 < len && src[len - 1] == '\n') {
if (0 < len && src[len - 1] == '\n') {
add_nl_to_tail = 1;
len--;
if (1 < len && src[len - 1] == '\r') {
if (0 < len && src[len - 1] == '\r') {
add_cr_to_tail = !!(ws_rule & WS_CR_AT_EOL);
len--;
}