From fd068221b7fbbcfe89ec74c7eeb0138e90e14b13 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 18 Dec 2019 10:51:59 +0000 Subject: 45083: Add signal protection to execarith(). Otherwise we could get re-entrancy in memory functions when setting variables. --- Src/exec.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Src') diff --git a/Src/exec.c b/Src/exec.c index 50027654a..fac095d64 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -5101,6 +5101,7 @@ execarith(Estate state, UNUSED(int do_exec)) mnumber val = zero_mnumber; int htok = 0; + queue_signals(); if (isset(XTRACE)) { printprompt4(); fprintf(xtrerr, "(("); @@ -5120,6 +5121,8 @@ execarith(Estate state, UNUSED(int do_exec)) fprintf(xtrerr, " ))\n"); fflush(xtrerr); } + unqueue_signals(); + if (errflag) { errflag &= ~ERRFLAG_ERROR; return 2; -- cgit 1.4.1