X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fecoli_node_sh_lex.c;h=a632f97d8f72cecfb5c19e11db6a14510f2cbbe0;hb=8937e9addfe15dfe34ea241884aa10cfb3dc54fb;hp=a0b7a055f4401f2ca8bd1d887d52523455a78054;hpb=8c1e15f7d7e507c02f41ef9c3dbe310005ce369f;p=protos%2Flibecoli.git diff --git a/lib/ecoli_node_sh_lex.c b/lib/ecoli_node_sh_lex.c index a0b7a05..a632f97 100644 --- a/lib/ecoli_node_sh_lex.c +++ b/lib/ecoli_node_sh_lex.c @@ -336,6 +336,13 @@ ec_node_sh_lex_complete(const struct ec_node *gen_node, return -1; } +static void ec_node_sh_lex_free_priv(struct ec_node *gen_node) +{ + struct ec_node_sh_lex *node = (struct ec_node_sh_lex *)gen_node; + + ec_node_free(node->child); +} + static size_t ec_node_sh_lex_get_children_count(const struct ec_node *gen_node) { @@ -346,15 +353,18 @@ ec_node_sh_lex_get_children_count(const struct ec_node *gen_node) return 0; } -static struct ec_node * -ec_node_sh_lex_get_child(const struct ec_node *gen_node, size_t i) +static int +ec_node_sh_lex_get_child(const struct ec_node *gen_node, size_t i, + struct ec_node **child, unsigned int *refs) { struct ec_node_sh_lex *node = (struct ec_node_sh_lex *)gen_node; if (i >= 1) - return NULL; + return -1; - return node->child; + *refs = 1; + *child = node->child; + return 0; } static struct ec_node_type ec_node_sh_lex_type = { @@ -362,6 +372,7 @@ static struct ec_node_type ec_node_sh_lex_type = { .parse = ec_node_sh_lex_parse, .complete = ec_node_sh_lex_complete, .size = sizeof(struct ec_node_sh_lex), + .free_priv = ec_node_sh_lex_free_priv, .get_children_count = ec_node_sh_lex_get_children_count, .get_child = ec_node_sh_lex_get_child, };