Make "git checkout" know about different branches
[gitweb.git] / apply.c
diff --git a/apply.c b/apply.c
index c0cd1520db6ef1036678046fc5c8ada174155c49..8a3ead6c949ecc0a493f9525580fd90d6bc6ebcd 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -570,8 +570,11 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc
                        int git_hdr_len = parse_git_header(line, len, size, patch);
                        if (git_hdr_len <= len)
                                continue;
-                       if (!patch->old_name && !patch->new_name)
-                               die("git diff header lacks filename information (line %d)", linenr);
+                       if (!patch->old_name && !patch->new_name) {
+                               if (!patch->def_name)
+                                       die("git diff header lacks filename information (line %d)", linenr);
+                               patch->old_name = patch->new_name = patch->def_name;
+                       }
                        *hdrsize = git_hdr_len;
                        return offset;
                }
@@ -748,9 +751,11 @@ static void show_stats(struct patch *patch)
        del = patch->lines_deleted;
        total = add + del;
 
-       total = (total * max + max_change / 2) / max_change;
-       add = (add * max + max_change / 2) / max_change;
-       del = total - add;
+       if (max_change > 0) {
+               total = (total * max + max_change / 2) / max_change;
+               add = (add * max + max_change / 2) / max_change;
+               del = total - add;
+       }
        printf(" %-*s |%5d %.*s%.*s\n",
                len, name, patch->lines_added + patch->lines_deleted,
                add, pluses, del, minuses);