summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2019-01-20 18:33:36 +0000
committerGitHub <noreply@github.com>2019-01-20 18:33:36 +0000
commit68166017dc31164aa9ad610d0d87658ab065a902 (patch)
tree158ea0c93955b23b18b5e071668f6fa8ad53244a
parent1e92a0363db4378cdef40877a33ef7ce3a7e15ac (diff)
parentb8b796c14a29e07f4cbc0e4413c1c1bc3affddd8 (diff)
downloadlibgit2-68166017dc31164aa9ad610d0d87658ab065a902.tar.gz
Merge pull request #4948 from libgit2/ethomson/memleaks
repository: free memory in symlink detection function
-rw-r--r--src/repository.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/repository.c b/src/repository.c
index 21e44351f..0f38f88f2 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -1415,6 +1415,10 @@ static bool is_filesystem_case_insensitive(const char *gitdir_path)
static bool are_symlinks_supported(const char *wd_path)
{
git_config *config = NULL;
+ git_buf global_buf = GIT_BUF_INIT;
+ git_buf xdg_buf = GIT_BUF_INIT;
+ git_buf system_buf = GIT_BUF_INIT;
+ git_buf programdata_buf = GIT_BUF_INIT;
git_buf path = GIT_BUF_INIT;
int fd;
struct stat st;
@@ -1428,11 +1432,6 @@ static bool are_symlinks_supported(const char *wd_path)
* _not_ set, then we do not test or enable symlink support.
*/
#ifdef GIT_WIN32
- git_buf global_buf = GIT_BUF_INIT;
- git_buf xdg_buf = GIT_BUF_INIT;
- git_buf system_buf = GIT_BUF_INIT;
- git_buf programdata_buf = GIT_BUF_INIT;
-
git_config_find_global(&global_buf);
git_config_find_xdg(&xdg_buf);
git_config_find_system(&system_buf);
@@ -1461,6 +1460,10 @@ static bool are_symlinks_supported(const char *wd_path)
(void)p_unlink(path.ptr);
done:
+ git_buf_dispose(&global_buf);
+ git_buf_dispose(&xdg_buf);
+ git_buf_dispose(&system_buf);
+ git_buf_dispose(&programdata_buf);
git_buf_dispose(&path);
git_config_free(config);
return symlinks != 0;