From: Karthik Nayak Date: Mon, 16 Mar 2026 11:14:15 GMT Subject: Re: [GSoC PATCH] apply: report the location of corrupt patches Message-ID: In-Reply-To: <20260315231538.68586-1-jerrywang183@yahoo.com> Jialong Wang writes: > When parsing a corrupt patch, git apply reports only the line number. > That does not tell the user which input the line number refers to. > > Include the patch input path in the error message so the reported > location is easier to use. > Definitely a welcome change. > Add tests for both file input and standard input. > > Signed-off-by: Jialong Wang > --- > apply.c | 3 ++- > t/t4100-apply-stat.sh | 16 +++++++++++++++- > 2 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/apply.c b/apply.c > index b6dd1066a0..904d1c3e55 100644 > --- a/apply.c > +++ b/apply.c > @@ -1875,7 +1875,8 @@ static int parse_single_patch(struct apply_state *state, > len = parse_fragment(state, line, size, patch, fragment); > if (len <= 0) { > free(fragment); > - return error(_("corrupt patch at line %d"), state->linenr); > + return error(_("corrupt patch at %s:%d"), > + state->patch_input_file, state->linenr); Okay so `prase_single_patch()` is called by `parse_chunk()` which is called by `apply_patch()`, which unconditionally sets `state->patch_input_file`. So this looks good. > } > fragment->patch = line; > fragment->size = len; > diff --git a/t/t4100-apply-stat.sh b/t/t4100-apply-stat.sh > index a5664f3eb3..f99e439688 100755 > --- a/t/t4100-apply-stat.sh > +++ b/t/t4100-apply-stat.sh > @@ -48,7 +48,21 @@ test_expect_success 'applying a hunk header which overflows fails' ' > +b > EOF > test_must_fail git apply patch 2>err && > - echo "error: corrupt patch at line 4" >expect && > + echo "error: corrupt patch at patch:4" >expect && > + test_cmp expect err > +' > + > +test_expect_success 'applying a hunk header which overflows from stdin fails' ' > + cat >patch <<-\EOF && > + diff -u a/file b/file > + --- a/file > + +++ b/file > + @@ -98765432109876543210 +98765432109876543210 @@ > + -a > + +b > + EOF > + test_must_fail git apply err && > + echo "error: corrupt patch at :4" >expect && > test_cmp expect err > ' > test_done > -- > 2.51.0 Nit: It would also be nice to see that this does work with multiple patch inputs, where one of them is corrupted.