about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2015-09-02 19:11:54 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2015-09-02 19:11:54 -0700
commit9f5dffa1f33ec43c306bdf3c87cebba5fcc95b64 (patch)
treec46534e1fc5ddc2333a6a1792946f180f985019a /Src
parentcdbd1b258192fa27c17241877f460c5543827759 (diff)
downloadzsh-9f5dffa1f33ec43c306bdf3c87cebba5fcc95b64.tar.gz
zsh-9f5dffa1f33ec43c306bdf3c87cebba5fcc95b64.tar.xz
zsh-9f5dffa1f33ec43c306bdf3c87cebba5fcc95b64.zip
36393: process queued signals during dotrap()
Diffstat (limited to 'Src')
-rw-r--r--Src/signals.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Src/signals.c b/Src/signals.c
index f45c1860c..aa0b5aaa7 100644
--- a/Src/signals.c
+++ b/Src/signals.c
@@ -1348,6 +1348,7 @@ void
 dotrap(int sig)
 {
     void *funcprog;
+    int q = queue_signal_level();
 
     if (sigtrapped[sig] & ZSIG_FUNC) {
 	HashNode hn = gettrapnode(sig, 0);
@@ -1370,5 +1371,9 @@ dotrap(int sig)
     if ((sigtrapped[sig] & ZSIG_IGNORED) || !funcprog || errflag)
 	return;
 
+    dont_queue_signals();
+
     dotrapargs(sig, sigtrapped+sig, funcprog);
+
+    restore_queue_signals(q);
 }