X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=apply.c;h=c50b3a60464ea05307af8e8d1be576cf96415ff0;hb=2a0925be3512451834ec9a3e023f4cff23c1cfb7;hp=179b3bbd00fc6da726491639920ba6540c9b3c71;hpb=2593a410e095f89f0eef40edb90b39029574462b;p=git.git diff --git a/apply.c b/apply.c index 179b3bbd..c50b3a60 100644 --- a/apply.c +++ b/apply.c @@ -693,7 +693,7 @@ static int parse_range(const char *line, int len, int offset, const char *expect line += digits; len -= digits; - *p2 = *p1; + *p2 = 1; if (*line == ',') { digits = parse_num(line+1, p2); if (!digits) @@ -834,7 +834,7 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s patch->new_name = NULL; } - if (patch->is_new != !oldlines) + if (patch->is_new && oldlines) return error("new file depends on old contents"); if (patch->is_delete != !newlines) { if (newlines) @@ -901,6 +901,8 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s break; } } + if (oldlines || newlines) + return -1; /* If a fragment ends with an incomplete line, we failed to include * it in the above loop because we hit oldlines == newlines == 0 * before seeing it.