diff options
author | Daniel Shahaf <danielsh@apache.org> | 2020-01-26 01:17:00 +0000 |
---|---|---|
committer | Daniel Shahaf <danielsh@apache.org> | 2020-01-29 09:02:49 +0000 |
commit | 581585dfc66e2bb18434cdd1ad2f5899b12a86dd (patch) | |
tree | 8084b9d252ecd3a0cbfaf7da58c770a2158a8687 /Src/math.c | |
parent | 8dab5bc03726168356f76c708919ed011adbaf95 (diff) | |
download | zsh-581585dfc66e2bb18434cdd1ad2f5899b12a86dd.tar.gz zsh-581585dfc66e2bb18434cdd1ad2f5899b12a86dd.tar.xz zsh-581585dfc66e2bb18434cdd1ad2f5899b12a86dd.zip |
45343: Queue signals around arithmetic evaluations
The queueing added in execarith() in 45083 is reverted since the callee does this now.
Diffstat (limited to 'Src/math.c')
-rw-r--r-- | Src/math.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Src/math.c b/Src/math.c index a38770073..905b910ec 100644 --- a/Src/math.c +++ b/Src/math.c @@ -1133,8 +1133,7 @@ notzero(mnumber a) /* macro to pop three values off the value stack */ -/**/ -void +static void op(int what) { mnumber a, b, c, *spval; @@ -1569,14 +1568,19 @@ mathparse(int pc) if (errflag) return; + queue_signals(); mtok = zzlex(); /* Handle empty input */ - if (pc == TOPPREC && mtok == EOI) + if (pc == TOPPREC && mtok == EOI) { + unqueue_signals(); return; + } checkunary(mtok, optr); while (prec[mtok] <= pc) { - if (errflag) + if (errflag) { + unqueue_signals(); return; + } switch (mtok) { case NUM: push(yyval, NULL, 0); @@ -1595,6 +1599,7 @@ mathparse(int pc) if (mtok != M_OUTPAR) { if (!errflag) zerr("bad math expression: ')' expected"); + unqueue_signals(); return; } break; @@ -1613,6 +1618,7 @@ mathparse(int pc) if (mtok != COLON) { if (!errflag) zerr("bad math expression: ':' expected"); + unqueue_signals(); return; } if (q) @@ -1636,4 +1642,5 @@ mathparse(int pc) mtok = zzlex(); checkunary(mtok, optr); } + unqueue_signals(); } |