diff --git a/src/expr.c b/src/expr.c index 26dc51e0..4ff3bd63 100644 --- a/src/expr.c +++ b/src/expr.c @@ -377,7 +377,7 @@ eval_userfunc(expr_node *node, Value *locals, Value *ans, int *nonconst) for (j=0; jnum_kids; j++) { DestroyValue(new_locals[j]); } - if (new_locals != stack_locals) free(new_locals); + if (new_locals != NULL && new_locals != stack_locals) free(new_locals); return E_RECURSIVE; } @@ -405,7 +405,10 @@ eval_userfunc(expr_node *node, Value *locals, Value *ans, int *nonconst) for (j=0; jnum_kids; j++) { DestroyValue(new_locals[j]); } - if (new_locals != stack_locals) free(new_locals); + if (new_locals != stack_locals && + new_locals != NULL) { + free(new_locals); + } return r; } diff --git a/src/funcs.c b/src/funcs.c index 4a2b1b8b..11cc977d 100644 --- a/src/funcs.c +++ b/src/funcs.c @@ -1203,7 +1203,7 @@ static int FChoose(expr_node *node, Value *locals, Value *ans, int *nonconst) int nargs = node->num_kids; Value(v); DBG(DBufInit(&DebugBuf)); - PUT("choose("); + DBG(PUT("choose(")); cur = node->child; r = evaluate_expr_node(cur, locals, &v, nonconst);