summaryrefslogtreecommitdiff
path: root/src/vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vector.c')
-rw-r--r--src/vector.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vector.c b/src/vector.c
index 0308ce26e..c6a644cc3 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -24,6 +24,22 @@ static int resize_vector(git_vector *v)
return 0;
}
+int git_vector_dup(git_vector *v, git_vector *src, git_vector_cmp cmp)
+{
+ assert(v && src);
+
+ v->_alloc_size = src->length;
+ v->_cmp = cmp;
+ v->length = src->length;
+ v->sorted = src->sorted && cmp == src->_cmp;
+ v->contents = git__malloc(src->length * sizeof(void *));
+ GITERR_CHECK_ALLOC(v->contents);
+
+ memcpy(v->contents, src->contents, src->length * sizeof(void *));
+
+ return 0;
+}
+
void git_vector_free(git_vector *v)
{
assert(v);