diff options
Diffstat (limited to 'src/set.c')
-rw-r--r-- | src/set.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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); |