]> git.droids-corp.org - protos/libecoli.git/commitdiff
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 428f453e5def5fb7845d92573cf2cbc3140110ba..c61b75922f1c3c79b479f6d84cfb9f875782a77c 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 dc6954d8a963701733042e9161cb96b553b9b1f4..ff0c5de8e928ef39e75b82412f978088824b9c1c 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[] = {