From: Bert Wesarg Date: Tue, 28 Jul 2009 08:07:18 GMT Subject: Re: [PATCH 1/3 v2] Add support for external programs for handling native fetches Message-ID: <36ca99e90907280107i7afb7c64tf0c49bdf82e1e7cb@mail.gmail.com> In-Reply-To: On Tue, Jul 28, 2009 at 08:08, Daniel Barkalow wrote: > +static struct child_process *get_shim(struct transport *transport) > +{ > +       struct shim_data *data = transport->data; > +       if (!data->shim) { > +               struct strbuf buf = STRBUF_INIT; > +               struct child_process *shim = xcalloc(1, sizeof(*shim)); > +               shim->in = -1; > +               shim->out = -1; > +               shim->err = 0; > +               shim->argv = xcalloc(4, sizeof(*shim->argv)); > +               strbuf_addf(&buf, "shim-%s", data->name); > +               shim->argv[0] = buf.buf; > +               shim->argv[1] = transport->remote->name; > +               shim->argv[2] = transport->url; > +               shim->git_cmd = 1; > +               start_command(shim); > +               data->shim = shim; > +       } > +       return data->shim; > +} > + > +static int disconnect_shim(struct transport *transport) > +{ > +       struct shim_data *data = transport->data; > +       if (data->shim) { > +               write(data->shim->in, "\n", 1); > +               close(data->shim->in); > +               finish_command(data->shim); > +               free(data->shim->argv); Does this leak data->shim->argv[0] (Ie "shim-%s")? Bert > +               free(data->shim); > +               transport->data = NULL; > +       } > +       return 0; > +}