mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-07 23:54:50 +00:00
commit
7e912dd659
20
src/notes.c
20
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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user