apply: handle "traditional" creation/deletion diff correctly.
authorJunio C Hamano <junkio@cox.net>
Sat, 4 Nov 2006 10:28:53 +0000 (02:28 -0800)
committerJunio C Hamano <junkio@cox.net>
Sat, 4 Nov 2006 10:35:17 +0000 (02:35 -0800)
We deduced a GNU diff output that does not use /dev/null convention
as creation (deletion) diff correctly by looking at the lack of context
and deleted lines (added lines), but forgot to reset the new (old) name
field properly.

This was a regression when we added a workaround for --unified=0 insanity.

Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-apply.c

index 11a5277a69f4cb5c02fb8c9a9312ebafdc472028..f70ee98e2d68385124ac75b2c53f068e63a6bf86 100644 (file)
@@ -1043,10 +1043,14 @@ static int parse_single_patch(char *line, unsigned long size, struct patch *patc
                 * then not having oldlines means the patch is creation,
                 * and not having newlines means the patch is deletion.
                 */
-               if (patch->is_new < 0 && !oldlines)
+               if (patch->is_new < 0 && !oldlines) {
                        patch->is_new = 1;
-               if (patch->is_delete < 0 && !newlines)
+                       patch->old_name = NULL;
+               }
+               if (patch->is_delete < 0 && !newlines) {
                        patch->is_delete = 1;
+                       patch->new_name = NULL;
+               }
        }
 
        if (0 < patch->is_new && oldlines)