On Fri, Aug 26, 2016 at 07:58:07PM +0000, Keller, Jacob E wrote:

> > >  char *git_pathdup_submodule(const char *path, const char *fmt,
> > > ...)
> > >  {
> > > +       int err;
> > >         va_list args;
> > >         struct strbuf buf = STRBUF_INIT;
> > >         va_start(args, fmt);
> > > -       do_submodule_path(&buf, path, fmt, args);
> > > +       err = do_submodule_path(&buf, path, fmt, args);
> > >         va_end(args);
> > > +       if (err)
> > 
> > Here we need a strbuf_release(&buf) to avoid a memory leak?
> 
> No, cause we "strbuf_detach" after this to return the buffer? Or is
> that not safe?

That code path is OK. I think the question is whether you need to
release the buffer in the "err" case where you return NULL and don't hit
the strbuf_detach.

IOW, does do_submodule_path() promise that when it returns an error,
"buf" has been left uninitialized? Some of our strbuf functions do, but
I do not know offhand about do_submodule_path().

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to