Thread (14 messages) flat view 14 messages, 4 authors, 2016-08-26

Re: [PATCH v11 0/8] submodule inline diff format

From: Jacob Keller <hidden>
Date: 2016-08-26 23:06:55

On Fri, Aug 26, 2016 at 1:04 PM, Jeff King [off-list ref] wrote:
On Fri, Aug 26, 2016 at 07:58:07PM +0000, Keller, Jacob E wrote:
quoted
quoted
quoted
 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
We probably should release for the error case. I'll do that. I don't
believe do_submodule_path ensures that the passed in argument is
guaranteed to not be initialized or used.

Thanks,
Jake
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help