summaryrefslogtreecommitdiff
path: root/Src/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/exec.c')
-rw-r--r--Src/exec.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/Src/exec.c b/Src/exec.c
index 9033e146d..ca7b2061f 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -851,8 +851,15 @@ execlist(Estate state, int dont_change_job, int exiting)
* for this sublist. */
donetrap = 1;
goto sublist_done;
- } else if (WC_SUBLIST_TYPE(code) == WC_SUBLIST_END)
+ } else if (WC_SUBLIST_TYPE(code) == WC_SUBLIST_END) {
donetrap = 1;
+ /*
+ * Treat this in the same way as if we reached
+ * the end of the sublist normally.
+ */
+ state->pc = next;
+ goto sublist_done;
+ }
}
cmdpush(CS_CMDAND);
break;
@@ -877,8 +884,15 @@ execlist(Estate state, int dont_change_job, int exiting)
* for this sublist. */
donetrap = 1;
goto sublist_done;
- } else if (WC_SUBLIST_TYPE(code) == WC_SUBLIST_END)
+ } else if (WC_SUBLIST_TYPE(code) == WC_SUBLIST_END) {
donetrap = 1;
+ /*
+ * Treat this in the same way as if we reached
+ * the end of the sublist normally.
+ */
+ state->pc = next;
+ goto sublist_done;
+ }
}
cmdpush(CS_CMDOR);
break;