Merge branch 'tr/maint-apply-non-git-patch-parsefix'
authorJunio C Hamano <gitster@pobox.com>
Wed, 26 Jun 2013 22:08:09 +0000 (15:08 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Jun 2013 22:08:09 +0000 (15:08 -0700)
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

builtin/apply.c
t/t4111-apply-subdir.sh
index faf8e3088340ab2787c45b0e105a600fd54e51d3..0e9b631db6db422b1e938d6168b608e0a2ae8618 100644 (file)
@@ -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)
index 7c398432bad761c1b38c6d15548bed0c389221fd..1618a6dbc7c718677cf669b5f6fc96f2682992fb 100755 (executable)
@@ -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 &&