On Mon, Aug 12, 2024 at 10:11:05AM -0400, Taylor Blau wrote:
Show 48 quoted lines
> On Thu, Aug 08, 2024 at 03:04:39PM +0200, Patrick Steinhardt wrote:
> > Git has some flags to make it output system paths as they have been
> > compiled into Git. This is done by calling `system_path()`, which
> > returns an allocated string. This string isn't ever free'd though,
> > creating a memory leak.
> >
> > Plug those leaks. While they are surfaced by t0211, there are more
> > memory leaks looming exposed by that test suite and it thus does not yet
> > pass with the memory leak checker enabled.
> >
> > Signed-off-by: Patrick Steinhardt <ps@pks.im>
> > ---
> > git.c | 12 +++++++++---
> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/git.c b/git.c
> > index e35af9b0e5..5eab88b472 100644
> > --- a/git.c
> > +++ b/git.c
> > @@ -173,15 +173,21 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
> > exit(0);
> > }
> > } else if (!strcmp(cmd, "--html-path")) {
> > - puts(system_path(GIT_HTML_PATH));
> > + char *path = system_path(GIT_HTML_PATH);
> > + puts(path);
> > + free(path);
> > trace2_cmd_name("_query_");
> > exit(0);
> > } else if (!strcmp(cmd, "--man-path")) {
> > - puts(system_path(GIT_MAN_PATH));
> > + char *path = system_path(GIT_MAN_PATH);
> > + puts(path);
> > + free(path);
> > trace2_cmd_name("_query_");
> > exit(0);
> > } else if (!strcmp(cmd, "--info-path")) {
> > - puts(system_path(GIT_INFO_PATH));
> > + char *path = system_path(GIT_INFO_PATH);
> > + puts(path);
> > + free(path);
> > trace2_cmd_name("_query_");
> > exit(0);
> > } else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) {
>
>
> Makes sense, though I wonder if this would be slightly cleaner to write
> like so (applies on top of this patch):