summary refs log tree commit diff
path: root/src/trap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/trap.c')
-rw-r--r--src/trap.c11
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;
 	}
 }