Skip to content

Commit 11aa20b

Browse files
committed
submodule: git submodule dup object dup has been added.
1 parent d6f57b9 commit 11aa20b

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

include/git2/submodule.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,13 @@ GIT_EXTERN(int) git_submodule_lookup(
224224
const char *name);
225225

226226
/**
227-
* Dup (retain) a submodule
227+
* Create an in-memory copy of a submodule. The copy must be explicitly
228+
* free'd or it will leak.
228229
*
229-
* @param submodule Submodule object
230+
* @param out Pointer to store the copy of the submodule
231+
* @param source Original tag to copy
230232
*/
231-
GIT_EXTERN(git_submodule *) git_submodule_dup(git_submodule *submodule);
233+
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
232234

233235
/**
234236
* Release a submodule

src/submodule.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1854,12 +1854,9 @@ static void submodule_release(git_submodule *sm)
18541854
git__free(sm);
18551855
}
18561856

1857-
git_submodule* git_submodule_dup(git_submodule *sm)
1857+
int git_submodule_dup(git_submodule **out, git_submodule *source)
18581858
{
1859-
if (!sm)
1860-
return NULL;
1861-
GIT_REFCOUNT_INC(sm);
1862-
return sm;
1859+
return git_object_dup((git_object **)out, (git_object *)source);
18631860
}
18641861

18651862
void git_submodule_free(git_submodule *sm)

0 commit comments

Comments
 (0)