From b445be3c3467d401c3c6a0585b0c94a32c3b4315 Mon Sep 17 00:00:00 2001 From: Olivier Matz Date: Thu, 2 Aug 2018 22:04:51 +0200 Subject: [PATCH] use helper in seq node --- lib/ecoli_node_seq.c | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/lib/ecoli_node_seq.c b/lib/ecoli_node_seq.c index ae0bb60..fa49c03 100644 --- a/lib/ecoli_node_seq.c +++ b/lib/ecoli_node_seq.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -186,43 +187,25 @@ static int ec_node_seq_set_config(struct ec_node *gen_node, const struct ec_config *config) { struct ec_node_seq *node = (struct ec_node_seq *)gen_node; - const struct ec_config *children = NULL, *child; struct ec_node **table = NULL; - size_t n, i; + size_t i, len = 0; - children = ec_config_dict_get(config, "children"); - if (children == NULL) { - errno = EINVAL; - goto fail; - } - - n = 0; - TAILQ_FOREACH(child, &children->list, next) - n++; - - table = ec_malloc(n * sizeof(*table)); + table = ec_node_config_node_list_to_table( + ec_config_dict_get(config, "children"), &len); if (table == NULL) goto fail; - n = 0; - TAILQ_FOREACH(child, &children->list, next) { - table[n] = ec_node_clone(child->node); - n++; - } - for (i = 0; i < node->len; i++) ec_node_free(node->table[i]); ec_free(node->table); node->table = table; - node->len = n; + node->len = len; return 0; fail: - if (table != NULL) { - for (i = 0; i < n; i++) - ec_node_free(table[i]); - } + for (i = 0; i < len; i++) + ec_node_free(table[i]); ec_free(table); return -1; } -- 2.39.5