summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Lobanov <gaussblurinc@gmail.com>2021-05-26 14:06:31 +0300
committerDmitry Lobanov <gaussblurinc@gmail.com>2021-05-26 14:06:31 +0300
commit11aa20b0a28769aef959b1f8665b40aa5daadf0b (patch)
tree63d34ce53534604fced1257573f699cdfee464b3
parentd6f57b9cfa4006c11ce17be74f3671cf42ea312e (diff)
downloadlibgit2-11aa20b0a28769aef959b1f8665b40aa5daadf0b.tar.gz
submodule: git submodule dup object dup has been added.
-rw-r--r--include/git2/submodule.h8
-rw-r--r--src/submodule.c7
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)