mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 00:43:41 +00:00
Avoid temporary object in lookup routine
This commit is contained in:
parent
364d800b01
commit
ba02079f2d
15
src/object.c
15
src/object.c
@ -374,27 +374,26 @@ int git_object_lookup_bypath(
|
||||
int error = -1;
|
||||
git_tree *tree = NULL;
|
||||
git_tree_entry *entry = NULL;
|
||||
git_object *tmpobj = NULL;
|
||||
|
||||
assert(out && treeish && path);
|
||||
|
||||
if (((error = git_object_peel((git_object**)&tree, treeish, GIT_OBJ_TREE)) < 0) ||
|
||||
((error = git_tree_entry_bypath(&entry, tree, path)) < 0) ||
|
||||
((error = git_tree_entry_to_object(&tmpobj, git_object_owner(treeish), entry)) < 0))
|
||||
if ((error = git_object_peel((git_object**)&tree, treeish, GIT_OBJ_TREE) < 0) ||
|
||||
(error = git_tree_entry_bypath(&entry, tree, path)) < 0)
|
||||
{
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (type == GIT_OBJ_ANY || git_object_type(tmpobj) == type) {
|
||||
*out = tmpobj;
|
||||
} else {
|
||||
if (type != GIT_OBJ_ANY && git_tree_entry_type(entry) != type)
|
||||
{
|
||||
giterr_set(GITERR_OBJECT,
|
||||
"object at path '%s' is not of the asked-for type %d",
|
||||
path, type);
|
||||
error = GIT_EINVALIDSPEC;
|
||||
git_object_free(tmpobj);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
error = git_tree_entry_to_object(out, git_object_owner(treeish), entry);
|
||||
|
||||
cleanup:
|
||||
git_tree_entry_free(entry);
|
||||
git_tree_free(tree);
|
||||
|
Loading…
Reference in New Issue
Block a user