git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jinoh Kang <luke1337@theori.io>
Cc: Junio C Hamano <junio@pobox.com>,
	git@vger.kernel.org,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH v2] diff: handle NULL filespecs in run_external_diff
Date: Fri, 06 Nov 2020 11:18:13 -0800	[thread overview]
Message-ID: <xmqqimaifg5m.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <a0513d6f-1f69-683d-d6c5-75b17b8b6890@theori.io> (Jinoh Kang's message of "Fri, 6 Nov 2020 17:02:19 +0000")

Jinoh Kang <luke1337@theori.io> writes:

> However, I humbly opine that the free() semantics do not apply to
> `diff_free_filespec_data`; rather, I prefer to see it as a function
> that simply transitions a diff_filespec from one state to another.

The reason why you prefer is unclear, but let's suppress puzzlement
and read on.

> I would put the blame on its name, since "data" feels too generic
> and makes the function sound like freeing the filespec _itself_.
> diff_filespec carries a lot of other things besides just `data`
> and `cnt_data`.

It frees resources held by its content data without freeing the
shell.  "struct diff_filespec" has a handful of pointer fields,
but data and cnt_data are the only allocated fields, no?

> I was unable to find any callsites that explicitly check for
> NULL-ness _immediately_ before calling diff_free_filespec_data.

OK, so a change to make diff_free_filespec_data() more cautious does
*not* help existing code; it changes the (so far) wrong assumption
made by 3aef54e8 (diff: munmap() file contents before running
external diff, 2019-07-11) that calling it with NULL was a safe
thing to do---after such a change, the assumption two calls added by
the commit makes become valid.

I dunno.  I am OK with either direction, but it feels to me that
making the helper more cautious would help us avoid similar
mistakes in the future.  Dscho, what do you think?

Thanks.

      parent reply	other threads:[~2020-11-06 19:18 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <aeb24944-17af-cf53-93f4-e727f9fe9988@theori.io>
     [not found] ` <xmqq4km4lppy.fsf@gitster.c.googlers.com>
2020-11-06 17:02   ` [PATCH v2] diff: handle NULL filespecs in run_external_diff Jinoh Kang
2020-11-06 17:14     ` [PATCH v3] diff: make diff_free_filespec_data accept NULL Jinoh Kang
2020-11-10 12:08       ` Johannes Schindelin
2020-11-10 13:16         ` Jinoh Kang
2020-11-10 14:21         ` Jinoh Kang
2020-11-10 17:02         ` Junio C Hamano
2020-11-10 14:06       ` [PATCH v4] " Jinoh Kang
2020-11-10 15:38         ` Johannes Schindelin
2020-11-11 12:30           ` Jinoh Kang
2020-11-11 16:28             ` Johannes Schindelin
2020-11-10 19:41         ` Junio C Hamano
2020-11-11 12:15         ` [PATCH v5] " Jinoh Kang
2020-11-11 16:27           ` Johannes Schindelin
2020-11-11 19:18             ` Junio C Hamano
2020-11-06 19:18     ` Junio C Hamano [this message]

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=xmqqimaifg5m.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=junio@pobox.com \
    --cc=luke1337@theori.io \
    /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).