# HG changeset patch # User lost@l-w.ca # Date 1288456826 21600 # Node ID 22bbb716dea683ea13ea66b9df52f8212f4d792b # Parent 4c272633fce23b1d61c60ef1ba0ceb18783e051a Fixed memory leaks related to expressions; bumped version to 3.0.1 diff -r 4c272633fce2 -r 22bbb716dea6 configure.ac --- a/configure.ac Fri Oct 29 19:28:54 2010 -0600 +++ b/configure.ac Sat Oct 30 10:40:26 2010 -0600 @@ -1,4 +1,4 @@ -AC_INIT([LWTools], [3.0], [lost@l-w.ca]) +AC_INIT([LWTools], [3.0.1], [lost@l-w.ca]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC gl_EARLY diff -r 4c272633fce2 -r 22bbb716dea6 lwlib/lw_expr.c --- a/lwlib/lw_expr.c Fri Oct 29 19:28:54 2010 -0600 +++ b/lwlib/lw_expr.c Sat Oct 30 10:40:26 2010 -0600 @@ -97,8 +97,13 @@ struct lw_expr_opers *o; if (!E) return; - for (o = E -> operands; o; o = o -> next) + while (E -> operands) + { + o = E -> operands; + E -> operands = o -> next; lw_expr_destroy(o -> p); + lw_Free(o); + } if (E -> type == lw_expr_type_var) lw_free(E -> value2); lw_free(E); @@ -119,7 +124,7 @@ r -> value2 = lw_strdup(E -> value2); for (o = E -> operands; o; o = o -> next) { - lw_expr_add_operand(r, lw_expr_copy(o -> p)); + lw_expr_add_operand(r, o -> p); } return r;