git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Thomas Gummerer <t.gummerer@gmail.com>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	git@vger.kernel.org,
	"Johannes Schindelin" <johannes.schindelin@gmx.de>,
	entwicklung@pengutronix.de
Subject: Re: Regression in v2.23
Date: Tue, 08 Oct 2019 12:11:26 +0900	[thread overview]
Message-ID: <xmqqh84knd7l.fsf@gitster-ct.c.googlers.com> (raw)
In-Reply-To: <20191007134831.GA74671@cat> (Thomas Gummerer's message of "Mon, 7 Oct 2019 14:48:31 +0100")

Thomas Gummerer <t.gummerer@gmail.com> writes:

> We can however rely on 'patch.def_name' in that case, which is
> extracted from the 'diff --git' line and should be equal to
> 'patch.new_name'.  Use that instead to avoid the segfault.

This patch makes the way this function calls parse_git_diff_header()
more in line with the way how it is used by its original caller in
apply.c::find_header(), but not quite.

I have to wonder if we want to move a bit of code around so that
callers of parse_git_diff_header() do not have to worry about
def_name and can rely on new_name and old_name fields correctly
filled.

There was only one caller of the parse_git_diff_header() function
before range-diff.  The division of labour between find_header() and
parse_git_diff_header() did not make any difference to the consumers
of the new/old_name fields.  They only cared that they do not have
to worry about def_name.  But by calling parse_git_diff_header()
that forces the caller to worry about def_name (which is done by
find_header() to free its callers from doing so), range-diff took
responsibility of caring, which was suboptimal.  The interface could
have been a bit more cleaned up before we started to reuse it in the
new caller, and as this bug shows, it may be time to do so now, no?

Perhaps before returing, parse_git_diff_header() should fill the two
names with xstrdup() of def_name if (!old_name && !new_name &&
!!def_name); all other cases the existing caller and this new caller
would work unchanged correctly, no?

  reply	other threads:[~2019-10-08  3:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-07 11:06 Regression in v2.23 Uwe Kleine-König
2019-10-07 13:48 ` Thomas Gummerer
2019-10-08  3:11   ` Junio C Hamano [this message]
2019-10-08  7:43     ` Johannes Schindelin
2019-10-08  6:24   ` Uwe Kleine-König
2019-10-08  7:44   ` Johannes Schindelin
2019-10-08  7:49     ` Johannes Schindelin
2019-10-08 17:38   ` [PATCH v2] range-diff: don't segfault with mode-only changes Thomas Gummerer
2019-10-08 19:44     ` Johannes Schindelin
2019-10-09  7:42     ` Uwe Kleine-König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqh84knd7l.fsf@gitster-ct.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=entwicklung@pengutronix.de \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    --cc=t.gummerer@gmail.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).