From d80416384f67474cd98a8fafe2cc1e4f1f5fa38b Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Thu, 2 May 2013 17:22:13 -0500 Subject: [PATCH] fix some leaks --- src/diff.c | 3 ++- src/index.c | 1 + src/transports/smart_protocol.c | 6 ++++++ tests-clar/commit/parse.c | 4 ---- tests-clar/submodule/status.c | 2 ++ 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/diff.c b/src/diff.c index a154e67e8..fbff1a6fb 100644 --- a/src/diff.c +++ b/src/diff.c @@ -716,7 +716,7 @@ static int diff_scan_inside_untracked_dir( error = git_iterator_advance(&info->nitem, info->new_iter); } - return error; + goto done; } /* look for actual untracked file */ @@ -747,6 +747,7 @@ static int diff_scan_inside_untracked_dir( break; } +done: git_buf_free(&base); return error; diff --git a/src/index.c b/src/index.c index d4aa475a9..ee659f8ab 100644 --- a/src/index.c +++ b/src/index.c @@ -349,6 +349,7 @@ static void index_free(git_index *index) { git_index_clear(index); git_vector_free(&index->entries); + git_vector_free(&index->names); git_vector_free(&index->reuc); git__free(index->index_file_path); diff --git a/src/transports/smart_protocol.c b/src/transports/smart_protocol.c index a5ad1e422..765b914b7 100644 --- a/src/transports/smart_protocol.c +++ b/src/transports/smart_protocol.c @@ -23,10 +23,16 @@ int git_smart__store_refs(transport_smart *t, int flushes) int error, flush = 0, recvd; const char *line_end; git_pkt *pkt; + git_pkt_ref *ref; + size_t i; /* Clear existing refs in case git_remote_connect() is called again * after git_remote_disconnect(). */ + git_vector_foreach(refs, i, ref) { + git__free(ref->head.name); + git__free(ref); + } git_vector_clear(refs); do { diff --git a/tests-clar/commit/parse.c b/tests-clar/commit/parse.c index 8de4401dc..415860a6e 100644 --- a/tests-clar/commit/parse.c +++ b/tests-clar/commit/parse.c @@ -386,10 +386,6 @@ This commit has a few LF at the start of the commit message"; \n\ This commit has a few LF at the start of the commit message"; - commit = (git_commit*)git__malloc(sizeof(git_commit)); - memset(commit, 0x0, sizeof(git_commit)); - commit->object.repo = g_repo; - cl_git_pass(parse_commit(&commit, buffer)); cl_assert_equal_s(message, git_commit_message(commit)); git_commit__free(commit); diff --git a/tests-clar/submodule/status.c b/tests-clar/submodule/status.c index fca84af63..88f388052 100644 --- a/tests-clar/submodule/status.c +++ b/tests-clar/submodule/status.c @@ -409,4 +409,6 @@ void test_submodule_status__untracked_dirs_containing_ignored_files(void) GIT_SUBMODULE_STATUS_IN_WD; cl_assert(status == expected); + + git_buf_free(&path); }