Jiang Xin <worldhello.net@xxxxxxxxx> writes: > When patch file generated against two non-git directories using > 'git diff --binary --no-index' without '--no-prefix', the patch > file has patch level greater then 1, and should be applied with > '-p2' option. But it does not work if there are binary differ > in the patch file, it is because in one case the patch level is > not properly handled. > > Signed-off-by: Jiang Xin <jiangxin@xxxxxxxxx> Can you please add a testcase to protect your fix from getting broken by later changes by other people, perhaps to t/t4120? By the way, this codepath is shared by all forms of patches "diff --git" header, not just binary. Do you see a similar breakage with --no-prefix patches that are not binary, and if not why? > --- > builtin/apply.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/builtin/apply.c b/builtin/apply.c > index 23c18c5..d603e37 100644 > --- a/builtin/apply.c > +++ b/builtin/apply.c > @@ -1126,6 +1126,7 @@ static char *git_header_name(char *line, int llen) > * form. > */ > for (len = 0 ; ; len++) { > + int nslash = p_value; > switch (name[len]) { > default: > continue; > @@ -1137,7 +1138,7 @@ static char *git_header_name(char *line, int llen) > char c = *second++; > if (c == '\n') > return NULL; > - if (c == '/') > + if (c == '/' && --nslash <= 0) > break; > } > if (second[len] == '\n' && !memcmp(name, second, len)) { > -- > 1.7.3.2.245.g03276.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html