diff options
Diffstat (limited to '')
-rw-r--r-- | src/trap.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/trap.c b/src/trap.c index 17316c9..e34e0f8 100644 --- a/src/trap.c +++ b/src/trap.c @@ -316,6 +316,9 @@ void dotrap(void) int i; int savestatus; + if (!pendingsigs) + return; + savestatus = exitstatus; pendingsigs = 0; barrier(); @@ -323,6 +326,12 @@ void dotrap(void) for (i = 0, q = gotsig; i < NSIG - 1; i++, q++) { if (!*q) continue; + + if (evalskip) { + pendingsigs = i + 1; + break; + } + *q = 0; p = trap[i + 1]; @@ -330,8 +339,6 @@ void dotrap(void) continue; evalstring(p, 0); exitstatus = savestatus; - if (evalskip) - break; } } |