From 94de782b7a3f7e0d26a2985ab522ffe3e69ba4a4 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Thu, 17 Nov 2016 21:00:27 -0500 Subject: [PATCH] valgrind findings --- c/mapping/mlr_dsl_cst_assignment_statements.c | 1 + c/mapping/mlr_dsl_cst_output_statements.c | 14 ++++++++++++++ c/mapping/rxval_expr_evaluators.c | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/c/mapping/mlr_dsl_cst_assignment_statements.c b/c/mapping/mlr_dsl_cst_assignment_statements.c index 64f9a027d..81e849113 100644 --- a/c/mapping/mlr_dsl_cst_assignment_statements.c +++ b/c/mapping/mlr_dsl_cst_assignment_statements.c @@ -391,6 +391,7 @@ static void handle_indexed_local_variable_assignment_from_xval( &all_non_null_or_error); if (all_non_null_or_error) { local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); + // xxx copy-or-not semantics. find out, fix, encode in function name. local_stack_frame_assign_extended_indexed(pframe, pstate->lhs_frame_relative_index, pmvkeys, rhs_xvalue); } sllmv_free(pmvkeys); diff --git a/c/mapping/mlr_dsl_cst_output_statements.c b/c/mapping/mlr_dsl_cst_output_statements.c index c3d29307c..3f7dfd968 100644 --- a/c/mapping/mlr_dsl_cst_output_statements.c +++ b/c/mapping/mlr_dsl_cst_output_statements.c @@ -1524,6 +1524,16 @@ static void free_dump(mlr_dsl_cst_statement_t* pstatement) { if (pstate->poutput_filename_evaluator != NULL) { pstate->poutput_filename_evaluator->pfree_func(pstate->poutput_filename_evaluator); } + if (pstate->pephemeral_target_xevaluator != NULL) { + pstate->pephemeral_target_xevaluator->pfree_func(pstate->pephemeral_target_xevaluator); + } + if (pstate->ptarget_keylist_evaluators != NULL) { + for (sllve_t* pe = pstate->ptarget_keylist_evaluators->phead; pe != NULL; pe = pe->pnext) { + rval_evaluator_t* pev = pe->pvvalue; + pev->pfree_func(pev); + } + sllv_free(pstate->ptarget_keylist_evaluators); + } if (pstate->pmulti_out != NULL) { multi_out_close(pstate->pmulti_out); @@ -1533,6 +1543,10 @@ static void free_dump(mlr_dsl_cst_statement_t* pstatement) { free(pstate); } + sllv_t* ptarget_keylist_evaluators; + rxval_evaluator_t* pephemeral_target_xevaluator; + + // ---------------------------------------------------------------- static void full_oosvar_target_getter(variables_t* pvars, dump_state_t* pstate, mv_t** ppval, mlhmmv_level_t** pplevel) diff --git a/c/mapping/rxval_expr_evaluators.c b/c/mapping/rxval_expr_evaluators.c index 1377c9b81..c198aa99c 100644 --- a/c/mapping/rxval_expr_evaluators.c +++ b/c/mapping/rxval_expr_evaluators.c @@ -66,7 +66,6 @@ rxval_evaluator_t* rxval_evaluator_alloc_from_ast(mlr_dsl_ast_node_t* pnode, fmg } // ================================================================ -// xxx // { // "a" : 1, // "b" : { @@ -208,6 +207,7 @@ static void rxval_evaluator_from_map_literal_free_aux(map_literal_list_evaluator rxval_evaluator_from_map_literal_free_aux(ppair_evaluator->plist_evaluator); } } + sllv_free(plist_evaluator->ppair_evaluators); } static void rxval_evaluator_from_map_literal_free(rxval_evaluator_t* prxval_evaluator) {