From: Junio C Hamano <gitster@pobox.com>
To: "Carlo Marcelo Arenas Belón" <carenas@gmail.com>
Cc: git@vger.kernel.org, bagasdotme@gmail.com, emilyshaffer@google.com
Subject: Re: [PATCH 2/2] bugreport: slightly better memory management
Date: Tue, 07 Sep 2021 14:56:59 -0700 [thread overview]
Message-ID: <xmqqy28882xg.fsf@gitster.g> (raw)
In-Reply-To: <20210904021231.88534-3-carenas@gmail.com> ("Carlo Marcelo Arenas Belón"'s message of "Fri, 3 Sep 2021 19:12:31 -0700")
Carlo Marcelo Arenas Belón <carenas@gmail.com> writes:
> 238b439d69 (bugreport: add tool to generate debugging info, 2020-04-16)
> introduces an UNLEAK for a strbuf that contains the buffer that gets
> flushed to disk earlier, instead of simply cleaning the buffer.
>
> do so, and while at it, move the free() call for another temporary string
> closer to its creator, so it is easier to keep track of.
'do so' -> 'Do so'.
>
> Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
> ---
> builtin/bugreport.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/bugreport.c b/builtin/bugreport.c
> index 17042381c3..a9bedde1e8 100644
> --- a/builtin/bugreport.c
> +++ b/builtin/bugreport.c
> @@ -152,6 +152,7 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
> strbuf_addstr(&report_path, "git-bugreport-");
> strbuf_addftime(&report_path, option_suffix, localtime_r(&now, &tm), 0, 0);
> strbuf_addstr(&report_path, ".txt");
> + free(prefixed_filename);
Correct, but it can be raised even further. We can free it after we
addstr to report_path.
I looked at the existing callers of prefix_filename(), hoping that
many of them might take it in a strbuf they have, in which case we
may be able to expose an alternative interface to take a caller
supplied strbuf to clean this one up. But it seems this is the only
one, so "store in a temporary, strbuf_addstr it, and immediately
free the temporary" here would be good.
> switch (safe_create_leading_directories(report_path.buf)) {
> case SCLD_OK:
> @@ -181,6 +182,7 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
> die_errno(_("unable to write to %s"), report_path.buf);
>
> close(report);
> + strbuf_release(&buffer);
We are done with the strbuf once write_in_full() returns, but this
is close enough.
> @@ -191,8 +193,6 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
> fprintf(stderr, _("Created new report at '%s'.\n"),
> user_relative_path);
>
> - free(prefixed_filename);
> - UNLEAK(buffer);
> UNLEAK(report_path);
> return !!launch_editor(report_path.buf, NULL, NULL);
Having reviewed all, I am not sure if my reaction is "good, now we
are cleaner" or "meh, for the same reason why report_path can be
left alive, it is fine to leave buffer alive, too".
next prev parent reply other threads:[~2021-09-07 21:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-03 11:59 [PATCH] Documentation: fix default directory of git bugreport -o Bagas Sanjaya
2021-09-04 2:12 ` bugreport papercuts Carlo Marcelo Arenas Belón
2021-09-04 2:12 ` [PATCH 1/2] bugreport: avoid duplicating options in usage() Carlo Marcelo Arenas Belón
2021-09-07 21:39 ` Junio C Hamano
2021-09-04 2:12 ` [PATCH 2/2] bugreport: slightly better memory management Carlo Marcelo Arenas Belón
2021-09-07 21:56 ` Junio C Hamano [this message]
2021-09-04 6:01 ` bugreport papercuts Bagas Sanjaya
2021-09-07 21:09 ` [PATCH] Documentation: fix default directory of git bugreport -o Junio C Hamano
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=xmqqy28882xg.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=bagasdotme@gmail.com \
--cc=carenas@gmail.com \
--cc=emilyshaffer@google.com \
--cc=git@vger.kernel.org \
/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.