summaryrefslogtreecommitdiff
path: root/Src/signals.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/signals.c')
-rw-r--r--Src/signals.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Src/signals.c b/Src/signals.c
index a848acdbe..81949843f 100644
--- a/Src/signals.c
+++ b/Src/signals.c
@@ -1184,7 +1184,7 @@ dotrapargs(int sig, int *sigtr, void *sigfn)
traplocallevel = locallevel;
runhookdef(BEFORETRAPHOOK, NULL);
if (*sigtr & ZSIG_FUNC) {
- int osc = sfcontext;
+ int osc = sfcontext, old_incompfunc = incompfunc;
HashNode hn = gettrapnode(sig, 0);
args = znewlinklist();
@@ -1210,8 +1210,10 @@ dotrapargs(int sig, int *sigtr, void *sigfn)
trapisfunc = isfunc = 1;
sfcontext = SFC_SIGNAL;
+ incompfunc = 0;
doshfunc((Shfunc)sigfn, args, 1);
sfcontext = osc;
+ incompfunc= old_incompfunc;
freelinklist(args, (FreeFunc) NULL);
zsfree(name);
} else {