diff options
author | Vicent Martà <vicent@github.com> | 2012-06-21 11:22:45 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2012-06-21 11:22:45 -0700 |
commit | 7e912dd659c0e45300307e77a25c7af62b76887c (patch) | |
tree | 8c5ef095a3df85632820ffe8b9bdeded66ced794 | |
parent | 6a9239990ac1146928d4523b8d164f8995d46ce2 (diff) | |
parent | f95121cb4f9da6c5b06c9d0b31c2c9a969c1c09d (diff) | |
download | libgit2-7e912dd659c0e45300307e77a25c7af62b76887c.tar.gz |
Merge pull request #780 from schu/cleanup
Cleanup
-rw-r--r-- | src/notes.c | 20 | ||||
-rw-r--r-- | src/object.c | 4 | ||||
-rw-r--r-- | tests-clar/notes/notes.c | 2 |
3 files changed, 13 insertions, 13 deletions
diff --git a/src/notes.c b/src/notes.c index efbdbabeb..0dfd3f891 100644 --- a/src/notes.c +++ b/src/notes.c @@ -56,7 +56,7 @@ static int find_subtree_r(git_tree **out, git_tree *root, error = find_subtree_in_current_level(&subtree, repo, root, target, *fanout); if (error == GIT_EEXISTS) { - return git_tree_lookup(out, repo, git_object_id((const git_object *)root)); + return git_tree_lookup(out, repo, git_tree_id(root)); } if (error < 0) @@ -64,13 +64,7 @@ static int find_subtree_r(git_tree **out, git_tree *root, *fanout += 2; error = find_subtree_r(out, subtree, repo, target, fanout); - - /* - * root is not ours to free, and the last subtree is the - * one being returned => we only need to free the subtrees in-between - */ - if (*out != subtree) - git_tree_free(subtree); + git_tree_free(subtree); return error; } @@ -153,7 +147,7 @@ static int manipulate_note_in_tree_r( int current_error)) { int error = -1; - git_tree *subtree = NULL; + git_tree *subtree = NULL, *new = NULL; char subtree_name[3]; error = find_subtree_in_current_level( @@ -176,7 +170,7 @@ static int manipulate_note_in_tree_r( /* An existing fanout has been found, let's dig deeper */ error = manipulate_note_in_tree_r( - out, repo, subtree, note_oid, annotated_object_sha, + &new, repo, subtree, note_oid, annotated_object_sha, fanout + 2, note_exists_cb, note_notfound_cb); if (error < 0) @@ -185,10 +179,12 @@ static int manipulate_note_in_tree_r( strncpy(subtree_name, annotated_object_sha + fanout, 2); subtree_name[2] = '\0'; - error = tree_write(out, repo, parent, - git_object_id((const git_object *)(*out)), subtree_name, 0040000); + error = tree_write(out, repo, parent, git_tree_id(new), + subtree_name, 0040000); + cleanup: + git_tree_free(new); git_tree_free(subtree); return error; } diff --git a/src/object.c b/src/object.c index d3673eda0..14d64befe 100644 --- a/src/object.c +++ b/src/object.c @@ -156,8 +156,10 @@ int git_object_lookup_prefix( type = odb_obj->raw.type; - if (create_object(&object, type) < 0) + if (create_object(&object, type) < 0) { + git_odb_object_free(odb_obj); return -1; + } /* Initialize parent object */ git_oid_cpy(&object->cached.oid, &odb_obj->cached.oid); diff --git a/tests-clar/notes/notes.c b/tests-clar/notes/notes.c index 5f7f5a9c3..e1387782e 100644 --- a/tests-clar/notes/notes.c +++ b/tests-clar/notes/notes.c @@ -23,6 +23,8 @@ static void assert_note_equal(git_note *note, char *message, git_oid *note_oid) cl_git_pass(git_blob_lookup(&blob, _repo, note_oid)); cl_assert_equal_s(git_note_message(note), (const char *)git_blob_rawcontent(blob)); + + git_blob_free(blob); } static void create_note(git_oid *note_oid, const char *canonical_namespace, const char *target_sha, const char *message) |