/*
* Proposed "new-style" GNU patch/diff format; see
- * https://public-inbox.org/git/7vll0wvb2a.fsf@assigned-by-dhcp.cox.net/
+ * https://lore.kernel.org/git/7vll0wvb2a.fsf@assigned-by-dhcp.cox.net/
*/
if (unquote_c_style(&name, line, NULL)) {
strbuf_release(&name);
unsigned long backwards, forwards, current;
int backwards_lno, forwards_lno, current_lno;
+ /*
+ * When running with --allow-overlap, it is possible that a hunk is
+ * seen that pretends to start at the beginning (but no longer does),
+ * and that *still* needs to match the end. So trust `match_end` more
+ * than `match_beginning`.
+ */
+ if (state->allow_overlap && match_beginning && match_end &&
+ img->nr - preimage->nr != 0)
+ match_beginning = 0;
+
/*
* If match_beginning or match_end is specified, there is no
* point starting from a wrong line that will never match and