From: Eric Sunshine Date: Mon, 09 Jul 2018 08:36:19 GMT Subject: Re: [PATCH v4 1/4] rebase: start implementing it as a builtin Message-ID: In-Reply-To: <857b04d8-37b4-596f-6f3e-45b6e2a59442@gmail.com> On Mon, Jul 9, 2018 at 3:59 AM Andrei Rybak wrote: > On 2018-07-08 20:01, Pratik Karki wrote: > > +static int use_builtin_rebase(void) > > +{ > > + struct child_process cp = CHILD_PROCESS_INIT; > > + struct strbuf out = STRBUF_INIT; > > + int ret; > > + > > + argv_array_pushl(&cp.args, > > + "config", "--bool", "rebase.usebuiltin", NULL); > > + cp.git_cmd = 1; > > + if (capture_command(&cp, &out, 6)) > > + return 0; > > Does strbuf out leak on return here? Good catch. This _is_ a potential leak. Here is an excerpt from the documentation of pipe_command(), which is called by capture_command(): Any output collected in the buffers is kept even if the command returns a non-zero exit. So, yes, this needs a strbuf_release() before returning. > > + strbuf_trim(&out); > > + ret = !strcmp("true", out.buf); > > + strbuf_release(&out); > > + return ret; > > +}