summaryrefslogtreecommitdiff
path: root/Src/jobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/jobs.c')
-rw-r--r--Src/jobs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/jobs.c b/Src/jobs.c
index f5ade7c2b..a22a8a6a8 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -383,7 +383,8 @@ update_job(Job jn)
}
/* If we have `foo|while true; (( x++ )); done', and hit
* ^C, we have to stop the loop, too. */
- if ((val & 0200) && inforeground == 1) {
+ if ((val & 0200) && inforeground == 1 &&
+ ((val & ~0200) == SIGINT || (val & ~0200) == SIGQUIT)) {
if (!errbrk_saved) {
errbrk_saved = 1;
prev_breaks = breaks;
@@ -399,7 +400,8 @@ update_job(Job jn)
adjustwinsize(0);
}
}
- } else if (list_pipe && (val & 0200) && inforeground == 1) {
+ } else if (list_pipe && (val & 0200) && inforeground == 1 &&
+ ((val & ~0200) == SIGINT || (val & ~0200) == SIGQUIT)) {
if (!errbrk_saved) {
errbrk_saved = 1;
prev_breaks = breaks;