diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/exec.c | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index cc0ad1d8e..897114d3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2019-12-18 Peter Stephenson <p.stephenson@samsung.com> + + * 45083: Src/exec.c: execarith() needs signal protection as + it sets variables. + 2019-12-18 Daniel Shahaf <danielsh@apache.org> * 45076: Src/loop.c: internal: Simplify handling of 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; |