From cd0fe1ac273c14097636847a2ecb4260d185ae28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Tue, 12 Jul 2011 20:46:07 +0200 Subject: [PATCH 1/2] Free sig in reflog test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Carlos Martín Nieto --- tests/t10-refs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/t10-refs.c b/tests/t10-refs.c index aab21dea8..f151b5a46 100644 --- a/tests/t10-refs.c +++ b/tests/t10-refs.c @@ -1064,6 +1064,7 @@ BEGIN_TEST(reflog0, "write a reflog for a given reference and ensure it can be r must_be_true(strcmp(current_master_tip, entry->oid_cur) == 0); must_be_true(strcmp(commit_msg, entry->msg) == 0); + git_signature_free(committer); git_reflog_free(reflog); close_temp_repo(repo2); END_TEST From 1a8167afbc2554677383b4275b37cc7c7ca61478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Thu, 14 Jul 2011 00:04:24 +0200 Subject: [PATCH 2/2] status: don't hide tree closing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's not obvious that recurse_tree_entries or recurse_tree_entry should free a resource that wasn't allocated by them. Do this explicitely and plug a leak while we're at it. Signed-off-by: Carlos Martín Nieto --- src/status.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/status.c b/src/status.c index 97a285502..3e46ea873 100644 --- a/src/status.c +++ b/src/status.c @@ -90,6 +90,7 @@ static void recurse_tree_entries(git_tree *tree, git_vector *entries, char *path if (git_tree_lookup(&subtree, tree->object.repo, &tree_entry->oid) == GIT_SUCCESS) { recurse_tree_entries(subtree, entries, file_path); + git_tree_close(subtree); return; } @@ -100,8 +101,6 @@ static void recurse_tree_entries(git_tree *tree, git_vector *entries, char *path git_oid_cpy(&e->head_oid, &tree_entry->oid); } - - git_tree_close(tree); } static void recurse_tree_entry(git_tree *tree, struct status_entry *e, const char *path) @@ -121,6 +120,7 @@ static void recurse_tree_entry(git_tree *tree, struct status_entry *e, const cha if (tree_entry != NULL) { if (git_tree_lookup(&subtree, tree->object.repo, &tree_entry->oid) == GIT_SUCCESS) { recurse_tree_entry(subtree, e, dir_sep+1); + git_tree_close(subtree); return; } } @@ -130,7 +130,6 @@ static void recurse_tree_entry(git_tree *tree, struct status_entry *e, const cha if (tree_entry != NULL) { git_oid_cpy(&e->head_oid, &tree_entry->oid); } - git_tree_close(tree); } struct status_st { @@ -277,6 +276,7 @@ int git_status_foreach(git_repository *repo, int (*callback)(const char *, unsig // recurse through tree entries git_commit_tree(&tree, head_commit); recurse_tree_entries(tree, &entries, ""); + git_tree_close(tree); git_commit_close(head_commit); dirent_st.workdir_path_len = strlen(repo->path_workdir); @@ -342,6 +342,7 @@ int git_status_file(unsigned int *status_flags, git_repository *repo, const char git_commit_tree(&tree, head_commit); recurse_tree_entry(tree, e, path); + git_tree_close(tree); git_commit_close(head_commit); // Find file in Workdir