diff --git a/src/submodule.c b/src/submodule.c index 998ef91fd..3fd338843 100644 --- a/src/submodule.c +++ b/src/submodule.c @@ -229,6 +229,7 @@ int git_submodule_lookup( if (error < 0) { git_submodule_free(sm); + git_buf_free(&path); return error; } @@ -1699,6 +1700,8 @@ static int submodule_read_config(git_submodule *sm, git_config *cfg) * should be strcasecmp */ if (strcmp(sm->name, value) != 0) { + if (sm->path != sm->name) + git__free(sm->path); sm->path = git__strdup(value); GITERR_CHECK_ALLOC(sm->path); } diff --git a/tests/core/mkdir.c b/tests/core/mkdir.c index 5e6a06002..96c972396 100644 --- a/tests/core/mkdir.c +++ b/tests/core/mkdir.c @@ -48,6 +48,8 @@ void test_core_mkdir__absolute(void) cl_assert(!git_path_isdir(path.ptr)); cl_git_fail(git_futils_mkdir(path.ptr, 0755, 0)); cl_assert(!git_path_isdir(path.ptr)); + + git_buf_free(&path); } void test_core_mkdir__basic(void) diff --git a/tests/index/rename.c b/tests/index/rename.c index ebaa9b740..86eaf0053 100644 --- a/tests/index/rename.c +++ b/tests/index/rename.c @@ -77,5 +77,10 @@ void test_index_rename__casechanging(void) cl_assert_equal_i(1, git_index_entrycount(index)); else cl_assert_equal_i(2, git_index_entrycount(index)); + + git_index_free(index); + git_repository_free(repo); + + cl_fixture_cleanup("rename"); }