Commit 39b1ad7f15d19837b3a25690c796ac0a1ac2720e

nulltoken 2013-11-05T16:14:20

Plug configuration file search paths leaks

diff --git a/src/fileops.c b/src/fileops.c
index 1c27b27..5763b37 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -618,7 +618,7 @@ static git_futils_dirs_guess_cb git_futils__dir_guess[GIT_FUTILS_DIR__MAX] = {
 	git_futils_guess_template_dirs,
 };
 
-static void git_futils_dirs_global_shutdown(void)
+void git_futils_dirs_global_shutdown(void)
 {
 	int i;
 	for (i = 0; i < GIT_FUTILS_DIR__MAX; ++i)
diff --git a/src/fileops.h b/src/fileops.h
index 59a6a21..636c9b6 100644
--- a/src/fileops.h
+++ b/src/fileops.h
@@ -399,4 +399,9 @@ extern int git_futils_filestamp_check(
 extern void git_futils_filestamp_set(
 	git_futils_filestamp *tgt, const git_futils_filestamp *src);
 
+/**
+ * Free the configuration file search paths.
+ */
+extern void git_futils_dirs_global_shutdown(void);
+
 #endif /* INCLUDE_fileops_h__ */
diff --git a/tests-clar/repo/config.c b/tests-clar/repo/config.c
index b8971bb..11abd42 100644
--- a/tests-clar/repo/config.c
+++ b/tests-clar/repo/config.c
@@ -46,6 +46,8 @@ void test_repo_config__open_missing_global(void)
 	git_config_free(global);
 	git_config_free(config);
 	git_repository_free(repo);
+
+	git_futils_dirs_global_shutdown();
 }
 
 void test_repo_config__open_missing_global_with_separators(void)
@@ -73,6 +75,8 @@ void test_repo_config__open_missing_global_with_separators(void)
 	git_config_free(global);
 	git_config_free(config);
 	git_repository_free(repo);
+
+	git_futils_dirs_global_shutdown();
 }
 
 #include "repository.h"
@@ -101,6 +105,8 @@ void test_repo_config__read_no_configs(void)
 	cl_assert_equal_i(GIT_ABBREV_DEFAULT, val);
 	git_repository_free(repo);
 
+	git_futils_dirs_global_shutdown();
+
 	/* with just system */
 
 	cl_must_pass(p_mkdir("alternate/1", 0777));
@@ -197,4 +203,6 @@ void test_repo_config__read_no_configs(void)
 
 	cl_assert(!git_path_exists("empty_standard_repo/.git/config"));
 	cl_assert(!git_path_exists("alternate/3/.gitconfig"));
+
+	git_futils_dirs_global_shutdown();
 }
diff --git a/tests-clar/repo/open.c b/tests-clar/repo/open.c
index f386612..7cfe041 100644
--- a/tests-clar/repo/open.c
+++ b/tests-clar/repo/open.c
@@ -322,6 +322,8 @@ void test_repo_open__no_config(void)
 	git_config_free(config);
 	git_repository_free(repo);
 	cl_fixture_cleanup("empty_standard_repo");
+
+	git_futils_dirs_global_shutdown();
 }
 
 void test_repo_open__force_bare(void)