diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-07-15 10:36:14 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-15 10:36:14 -0700 |
commit | 90360c710c4105e3bce74fc2d746c4fa48bf07e7 (patch) | |
tree | 24fd9f59b7c7eab53cb7c0f493272cb598de2724 | |
parent | 29b2f0565a1e3fdd6ef40d6e12e211757071ef56 (diff) | |
parent | 212eb96a96e256933a76e48d85fa4f500bed0dee (diff) | |
download | git-90360c710c4105e3bce74fc2d746c4fa48bf07e7.tar.gz |
Merge branch 'tr/maint-apply-non-git-patch-parsefix' into maint
"git apply" parsed patches that add new files, generated by programs
other than Git, incorrectly. This is an old breakage in v1.7.11.
* tr/maint-apply-non-git-patch-parsefix:
apply: carefully strdup a possibly-NULL name
-rw-r--r-- | builtin/apply.c | 2 | ||||
-rwxr-xr-x | t/t4111-apply-subdir.sh | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/builtin/apply.c b/builtin/apply.c index 30eefc3c7b..3979f8bf3d 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 7c398432ba..1618a6dbc7 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 && |