better cleanup priv
authorOlivier Matz <zer0@droids-corp.org>
Sun, 12 Aug 2018 12:56:23 +0000 (14:56 +0200)
committerOlivier Matz <zer0@droids-corp.org>
Sun, 12 Aug 2018 12:56:23 +0000 (14:56 +0200)
This is useful to avoid a segfault when debugging a node
beeing freed: when the priv is freed, get_child_count() must
return 0, because the node table is empty.

lib/ecoli_node_cmd.c
lib/ecoli_node_seq.c

index 428f453..c61b759 100644 (file)
@@ -415,12 +415,18 @@ static void ec_node_cmd_free_priv(struct ec_node *gen_node)
        size_t i;
 
        ec_free(node->cmd_str);
+       node->cmd_str = NULL;
        ec_node_free(node->expr);
+       node->expr = NULL;
        ec_node_free(node->parser);
+       node->parser = NULL;
        ec_node_free(node->cmd);
+       node->cmd = NULL;
        for (i = 0; i < node->len; i++)
                ec_node_free(node->table[i]);
        ec_free(node->table);
+       node->table = NULL;
+       node->len = 0;
 }
 
 static const struct ec_config_schema ec_node_cmd_subschema[] = {
index dc6954d..ff0c5de 100644 (file)
@@ -164,6 +164,8 @@ static void ec_node_seq_free_priv(struct ec_node *gen_node)
        for (i = 0; i < node->len; i++)
                ec_node_free(node->table[i]);
        ec_free(node->table);
+       node->table = NULL;
+       node->len = 0;
 }
 
 static const struct ec_config_schema ec_node_seq_subschema[] = {