summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-06-26 22:08:09 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-06-26 22:08:09 (GMT)
commitad76feb55eb7645661421e213796129efcbb7d56 (patch)
tree6b1d643c3e8fa2b17a4e85a5d37496208a460a60
parent12dd2f69337e29254e743aa6fb3b04937f302209 (diff)
parent212eb96a96e256933a76e48d85fa4f500bed0dee (diff)
downloadgit-ad76feb55eb7645661421e213796129efcbb7d56.zip
git-ad76feb55eb7645661421e213796129efcbb7d56.tar.gz
git-ad76feb55eb7645661421e213796129efcbb7d56.tar.bz2
Merge branch 'tr/maint-apply-non-git-patch-parsefix'
Fix for the codepath to parse patches that add new files, generated by programs other than Git. THis is an old breakage in v1.7.11 and will need to be merged down to the maintanance tracks. * tr/maint-apply-non-git-patch-parsefix: apply: carefully strdup a possibly-NULL name
-rw-r--r--builtin/apply.c2
-rwxr-xr-xt/t4111-apply-subdir.sh14
2 files changed, 15 insertions, 1 deletions
diff --git a/builtin/apply.c b/builtin/apply.c
index faf8e30..0e9b631 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -906,7 +906,7 @@ static void parse_traditional_patch(const char *first, const char *second, struc
patch->old_name = name;
} else {
patch->old_name = name;
- patch->new_name = xstrdup(name);
+ patch->new_name = null_strdup(name);
}
}
if (!name)
diff --git a/t/t4111-apply-subdir.sh b/t/t4111-apply-subdir.sh
index 7c39843..1618a6d 100755
--- a/t/t4111-apply-subdir.sh
+++ b/t/t4111-apply-subdir.sh
@@ -86,6 +86,20 @@ test_expect_success 'apply --index from subdir of toplevel' '
test_cmp expected sub/dir/file
'
+test_expect_success 'apply half-broken patch from subdir of toplevel' '
+ (
+ cd sub/dir &&
+ test_must_fail git apply <<-EOF
+ --- sub/dir/file
+ +++ sub/dir/file
+ @@ -1,0 +1,0 @@
+ --- file_in_root
+ +++ file_in_root
+ @@ -1,0 +1,0 @@
+ EOF
+ )
+'
+
test_expect_success 'apply from .git dir' '
cp postimage expected &&
cp preimage .git/file &&