diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-12-22 12:27:01 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-12-22 12:27:01 -0800 |
commit | 6bcaff1a4fe4a3088348e706c149941c74d1ad61 (patch) | |
tree | a03cc8a4a3b8fa2cdf06bdbed93ee8a1aac2692d /builtin/help.c | |
parent | 5109f2aaabcd7ce2c493bb663417c2dd4d5b81fe (diff) | |
parent | 59362e560d3c439e77768983b00eade08be9bc3e (diff) | |
download | git-6bcaff1a4fe4a3088348e706c149941c74d1ad61.tar.gz |
Merge branch 'jc/exec-cmd-system-path-leak-fix'
The function sometimes returned a non-freeable memory and some
other times returned a piece of memory that must be freed.
* jc/exec-cmd-system-path-leak-fix:
system_path(): always return free'able memory to the caller
Diffstat (limited to 'builtin/help.c')
-rw-r--r-- | builtin/help.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/builtin/help.c b/builtin/help.c index b3c818ee01..e78c135e01 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -321,16 +321,18 @@ static void setup_man_path(void) { struct strbuf new_path = STRBUF_INIT; const char *old_path = getenv("MANPATH"); + char *git_man_path = system_path(GIT_MAN_PATH); /* We should always put ':' after our path. If there is no * old_path, the ':' at the end will let 'man' to try * system-wide paths after ours to find the manual page. If * there is old_path, we need ':' as delimiter. */ - strbuf_addstr(&new_path, system_path(GIT_MAN_PATH)); + strbuf_addstr(&new_path, git_man_path); strbuf_addch(&new_path, ':'); if (old_path) strbuf_addstr(&new_path, old_path); + free(git_man_path); setenv("MANPATH", new_path.buf, 1); strbuf_release(&new_path); @@ -380,8 +382,10 @@ static void show_info_page(const char *git_cmd) static void get_html_page_path(struct strbuf *page_path, const char *page) { struct stat st; + char *to_free = NULL; + if (!html_path) - html_path = system_path(GIT_HTML_PATH); + html_path = to_free = system_path(GIT_HTML_PATH); /* Check that we have a git documentation directory. */ if (!strstr(html_path, "://")) { @@ -392,6 +396,7 @@ static void get_html_page_path(struct strbuf *page_path, const char *page) strbuf_init(page_path, 0); strbuf_addf(page_path, "%s/%s.html", html_path, page); + free(to_free); } /* |