Hi Brandon,
On Tue, 7 Mar 2017, Brandon Williams wrote:
> On 03/07, Johannes Schindelin wrote:
> > const char *setup_git_directory_gently(int *nongit_ok)
> > {
> > + struct strbuf cwd = STRBUF_INIT, dir = STRBUF_INIT, gitdir =
> > STRBUF_INIT;
>
> I couldn't see any strbuf_release() calls for these strbufs so there may
> be some memory leaking here.
You are correct, of course. Something like this may work:
-- snipsnap --
diff --git a/setup.c b/setup.c
index 9118b48590a..c822582b96e 100644
--- a/setup.c
+++ b/setup.c
@@ -1027,6 +1027,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
case GIT_DIR_HIT_MOUNT_POINT:
if (nongit_ok) {
*nongit_ok = 1;
+ strbuf_release(&cwd);
+ strbuf_release(&dir);
return NULL;
}
die(_("Not a git repository (or any parent up to mount point
%s)\n"
@@ -1044,6 +1046,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
startup_info->have_repository = !nongit_ok || !*nongit_ok;
startup_info->prefix = prefix;
+ strbuf_release(&cwd);
+ strbuf_release(&dir);
+ strbuf_release(&gitdir);
+
return prefix;
}