From 8dbae776c9d19efb604f53a38b8b74e92f9f2599 Mon Sep 17 00:00:00 2001 From: Dianne Skoll Date: Sat, 1 Jun 2024 09:27:27 -0400 Subject: [PATCH] Fix SEGV. --- src/expr.c | 7 +++++-- src/funcs.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) 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);