From: Alexander Kuleshov <kuleshovmail@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH] git-compat-util.h: move extension stripping from handle_builtin()
Date: Sat, 20 Feb 2016 18:35:47 +0600 [thread overview]
Message-ID: <20160220123547.GB1389@localhost> (raw)
In-Reply-To: <20160220084804.GB17171@sigill.intra.peff.net>
Hello Jeff,
On 02-20-16, Jeff King wrote:
> On Sat, Feb 20, 2016 at 02:10:58PM +0600, Alexander Kuleshov wrote:
>
> I'm not convinced that moving the functions inline into git-compat-util
> is actually cleaner. We've expanded the interface that is visible to the
> whole code base, warts at all.
>
> One wart I see is that the caller cannot know whether the return value
> was newly allocated or not, and therefore cannot free it, creating a
> potential memory leak. Another is that the return value is not really
> necessary at all; we always munge argv[0].
>
> Does any other part of the code actually care about this
> extension-stripping?
Nope, only this one.
>
> Perhaps instead, could we do this:
> If we drop this default-to-empty value of STRIP_EXTENSION entirely, then
> we can do our #ifdef local to git.c, where it does not bother anybody
> else. Like:
>
> #ifdef STRIP_EXTENSION
> static void strip_extension(const char **argv)
> {
> /* Do the thing */
> }
> #else
> #define strip_extension(x)
> #endif
>
> (Note that I also simplified the return value).
>
> In the case that we do have STRIP_EXTENSION, I don't think we need to
> handle the empty-string case. It would be a regression for somebody
> passing -DSTRIP_EXTENSION="", but I don't think that's worth worrying
> about. That macro is defined totally internally.
>
> I suspect you could also use strip_suffix here. So something like:
>
> size_t len;
>
> if (strip_suffix(str, STRIP_EXTENSION, &len))
> argv[0] = xmemdupz(argv[0], len);
>
> would probably work, but that's totally untested.
Good suggestion. I will try to do it and test.
Thank you.
prev parent reply other threads:[~2016-02-20 12:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-20 8:10 [PATCH] git-compat-util.h: move extension stripping from handle_builtin() Alexander Kuleshov
2016-02-20 8:48 ` Jeff King
2016-02-20 12:35 ` Alexander Kuleshov [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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160220123547.GB1389@localhost \
--to=kuleshovmail@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.