# HG changeset patch # User lost@l-w.ca # Date 1308791586 21600 # Node ID 19ca3108a2238874acfb697e55cd8f9cdb2fb029 # Parent 95181f1ad183115b873033464ffe9a707a174ffc Fixed numerous *common* memory leaks in epxression code diff -r 95181f1ad183 -r 19ca3108a223 lwlib/lw_expr.c --- a/lwlib/lw_expr.c Wed Jun 22 19:06:14 2011 -0600 +++ b/lwlib/lw_expr.c Wed Jun 22 19:13:06 2011 -0600 @@ -575,7 +575,10 @@ E -> value2 = lw_strdup(te -> value2); for (o = te -> operands; o; o = o -> next) { - lw_expr_add_operand(E, lw_expr_copy(o -> p)); + lw_expr_t xxx; + xxx = lw_expr_copy(o -> p); + lw_expr_add_operand(E, xxx); + lw_expr_destroy(xxx); } lw_expr_destroy(te); goto again; @@ -932,6 +935,7 @@ lw_free(o); } *E = *r; + lw_free(r); return; } else if (c == 0) @@ -1003,6 +1007,7 @@ { t1 = lw_expr_build(lw_expr_type_oper, lw_expr_oper_times, E3, o -> p); lw_expr_add_operand(E, t1); + lw_expr_destroy(t1); } lw_expr_destroy(E2);