diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2017-01-29 08:30:14 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2017-01-29 08:30:14 -0800 |
commit | e51c9c17af51e4055efb5a2cc36739d1d7ae457f (patch) | |
tree | b77de131860f9f0d48ed0604d095a82c59665a1a /Src/loop.c | |
parent | 0672c753596bd454e7456fe660eab1b8bf2879d1 (diff) | |
download | zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.gz zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.xz zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.zip |
40453: signal handler safety for callers of patcompile(PAT_STATIC), which is not re-entrant.
Diffstat (limited to 'Src/loop.c')
-rw-r--r-- | Src/loop.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Src/loop.c b/Src/loop.c index ae87b2f5f..f7eae307b 100644 --- a/Src/loop.c +++ b/Src/loop.c @@ -620,7 +620,9 @@ execcase(Estate state, int do_exec) spprog = state->prog->pats + npat; pprog = NULL; pat = NULL; - + + queue_signals(); + if (isset(XTRACE)) { int htok = 0; pat = dupstring(ecrawstr(state->prog, state->pc, &htok)); @@ -657,6 +659,8 @@ execcase(Estate state, int do_exec) patok = anypatok = 1; state->pc += 2; nalts--; + + unqueue_signals(); } state->pc += 2 * nalts; if (isset(XTRACE)) { |