From 53cb7370f57718ced5647d85f0c4b433f2aaec55 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Sat, 12 Mar 2016 11:32:58 -0500 Subject: [PATCH] valgrind --- c/mapping/mlr_dsl_cst.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/c/mapping/mlr_dsl_cst.c b/c/mapping/mlr_dsl_cst.c index cce8d5ec4..3c7bfac2f 100644 --- a/c/mapping/mlr_dsl_cst.c +++ b/c/mapping/mlr_dsl_cst.c @@ -759,8 +759,6 @@ static void cst_statement_item_free(mlr_dsl_cst_statement_item_t* pitem) { if (pitem == NULL) return; free(pitem->output_field_name); - if (pitem->prhs_evaluator != NULL) - pitem->prhs_evaluator->pfree_func(pitem->prhs_evaluator); if (pitem->poosvar_lhs_keylist_evaluators != NULL) { for (sllve_t* pe = pitem->poosvar_lhs_keylist_evaluators->phead; pe != NULL; pe = pe->pnext) { @@ -778,6 +776,23 @@ static void cst_statement_item_free(mlr_dsl_cst_statement_item_t* pitem) { sllv_free(pitem->poosvar_lhs_namelist_evaluators); } + if (pitem->prhs_evaluator != NULL) + pitem->prhs_evaluator->pfree_func(pitem->prhs_evaluator); + + if (pitem->poosvar_rhs_keylist_evaluators != NULL) { + for (sllve_t* pe = pitem->poosvar_rhs_keylist_evaluators->phead; pe != NULL; pe = pe->pnext) { + rval_evaluator_t* pevaluator = pe->pvvalue; + pevaluator->pfree_func(pevaluator); + } + sllv_free(pitem->poosvar_rhs_keylist_evaluators); + } + + if (pitem->pcond_statements != NULL) { + for (sllve_t* pe = pitem->pcond_statements->phead; pe != NULL; pe = pe->pnext) + cst_statement_free(pe->pvvalue); + sllv_free(pitem->pcond_statements); + } + free(pitem); }