Commit 98fec8a9 by Vicent Marti

Implement `git_odb_object_dup`

parent 86774742
...@@ -358,6 +358,20 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_oty ...@@ -358,6 +358,20 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_oty
GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_otype type); GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_otype type);
/** /**
* Create a copy of an odb_object
*
* The returned copy must be manually freed with `git_odb_object_free`.
* Note that because of an implementation detail, the returned copy will be
* the same pointer as `source`: the object is internally refcounted, so the
* copy still needs to be freed twice.
*
* @param dest pointer where to store the copy
* @param source object to copy
* @return 0 or an error code
*/
GIT_EXTERN(int) git_odb_object_dup(git_odb_object **dest, git_odb_object *source);
/**
* Close an ODB object * Close an ODB object
* *
* This method must always be called once a `git_odb_object` is no * This method must always be called once a `git_odb_object` is no
......
...@@ -124,6 +124,13 @@ git_otype git_odb_object_type(git_odb_object *object) ...@@ -124,6 +124,13 @@ git_otype git_odb_object_type(git_odb_object *object)
return object->cached.type; return object->cached.type;
} }
int git_odb_object_dup(git_odb_object **dest, git_odb_object *source)
{
git_cached_obj_incref(source);
*dest = source;
return 0;
}
void git_odb_object_free(git_odb_object *object) void git_odb_object_free(git_odb_object *object)
{ {
if (object == NULL) if (object == NULL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment