summaryrefslogtreecommitdiff
path: root/src/libgit2/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libgit2/object.c')
-rw-r--r--src/libgit2/object.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/libgit2/object.c b/src/libgit2/object.c
index b7796f057..5fab77e6a 100644
--- a/src/libgit2/object.c
+++ b/src/libgit2/object.c
@@ -108,15 +108,13 @@ int git_object__from_raw(
return 0;
}
-int git_object__from_odb_object(
+int git_object__init_from_odb_object(
git_object **object_out,
git_repository *repo,
git_odb_object *odb_obj,
git_object_t type)
{
- int error;
size_t object_size;
- git_object_def *def;
git_object *object = NULL;
GIT_ASSERT_ARG(object_out);
@@ -143,6 +141,23 @@ int git_object__from_odb_object(
object->cached.size = odb_obj->cached.size;
object->repo = repo;
+ *object_out = object;
+ return 0;
+}
+
+int git_object__from_odb_object(
+ git_object **object_out,
+ git_repository *repo,
+ git_odb_object *odb_obj,
+ git_object_t type)
+{
+ int error;
+ git_object_def *def;
+ git_object *object = NULL;
+
+ if ((error = git_object__init_from_odb_object(&object, repo, odb_obj, type)) < 0)
+ return error;
+
/* Parse raw object data */
def = &git_objects_table[odb_obj->cached.type];
GIT_ASSERT(def->free && def->parse);