summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/utils.c8
-rw-r--r--src/utils.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index 5296332..9fa4d80 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -124,6 +124,14 @@ int collection_count(struct collection *col)
return cnt;
}
+void collection_copy(struct collection *dest, struct collection *src)
+{
+ if (!dest || !src) return;
+ dest->capacity = src->capacity;
+ dest->list = malloc(sizeof(void*) * src->capacity);
+ memcpy(dest->list, src->list, sizeof(void*) * src->capacity);
+}
+
#ifndef HAVE_STPCPY
/**
* Copy characters from one string into another
diff --git a/src/utils.h b/src/utils.h
index 730fbad..67477b5 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -54,6 +54,7 @@ void collection_add(struct collection *col, void *element);
void collection_remove(struct collection *col, void *element);
int collection_count(struct collection *col);
void collection_free(struct collection *col);
+void collection_copy(struct collection *dest, struct collection *src);
#define MERGE_(a,b) a ## _ ## b
#define LABEL_(a,b) MERGE_(a, b)