diff options
author | Dmitry Lobanov <gaussblurinc@gmail.com> | 2021-05-26 14:06:31 +0300 |
---|---|---|
committer | Dmitry Lobanov <gaussblurinc@gmail.com> | 2021-05-26 14:06:31 +0300 |
commit | 11aa20b0a28769aef959b1f8665b40aa5daadf0b (patch) | |
tree | 63d34ce53534604fced1257573f699cdfee464b3 | |
parent | d6f57b9cfa4006c11ce17be74f3671cf42ea312e (diff) | |
download | libgit2-11aa20b0a28769aef959b1f8665b40aa5daadf0b.tar.gz |
submodule: git submodule dup object dup has been added.
-rw-r--r-- | include/git2/submodule.h | 8 | ||||
-rw-r--r-- | src/submodule.c | 7 |
2 files changed, 7 insertions, 8 deletions
diff --git a/include/git2/submodule.h b/include/git2/submodule.h index 139a0cbc1..e5bd4c7b2 100644 --- a/include/git2/submodule.h +++ b/include/git2/submodule.h @@ -224,11 +224,13 @@ GIT_EXTERN(int) git_submodule_lookup( const char *name); /** - * Dup (retain) a submodule + * Create an in-memory copy of a submodule. The copy must be explicitly + * free'd or it will leak. * - * @param submodule Submodule object + * @param out Pointer to store the copy of the submodule + * @param source Original tag to copy */ -GIT_EXTERN(git_submodule *) git_submodule_dup(git_submodule *submodule); +GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source); /** * Release a submodule diff --git a/src/submodule.c b/src/submodule.c index b78bef2e4..598a24a9e 100644 --- a/src/submodule.c +++ b/src/submodule.c @@ -1854,12 +1854,9 @@ static void submodule_release(git_submodule *sm) git__free(sm); } -git_submodule* git_submodule_dup(git_submodule *sm) +int git_submodule_dup(git_submodule **out, git_submodule *source) { - if (!sm) - return NULL; - GIT_REFCOUNT_INC(sm); - return sm; + return git_object_dup((git_object **)out, (git_object *)source); } void git_submodule_free(git_submodule *sm) |