summaryrefslogtreecommitdiff
path: root/src/set.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/set.c')
-rw-r--r--src/set.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/set.c b/src/set.c
index 1a5fc92..978115e 100644
--- a/src/set.c
+++ b/src/set.c
@@ -34,6 +34,7 @@ set_new(const size_t value_size, const struct Set **const out) {
const struct Set *ret = NULL;
const struct Vector *table = NULL;
+ const struct Tree *tree_template = NULL;
ret = malloc(sizeof(*ret));
if (ret == NULL) {
@@ -46,6 +47,15 @@ set_new(const size_t value_size, const struct Set **const out) {
goto out;
}
+ if (tree_new(value_size, &tree_template)) {
+ logerr("tree_new()");
+ goto out;
+ }
+
+ for (size_t _i = 0U; _i < vector_capacity(table); _i++) {
+ assert(vector_push_back(table, tree_template) == 0);
+ }
+
memcpy((void *)ret, &(struct Set) {
.table = table,
.value_size = value_size,
@@ -54,6 +64,9 @@ set_new(const size_t value_size, const struct Set **const out) {
*out = ret;
rc = 0;
out:
+ if (tree_template != NULL) {
+ tree_free(&tree_template);
+ }
if (rc) {
if (table != NULL) {
vector_free(&table);