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