about summary refs log tree commit diff
path: root/Src/jobs.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-07-12 15:09:56 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-07-12 15:09:56 +0000
commit3257f6b8d561cdf8805744d2a988b4bf414249fc (patch)
tree0fd39eb26cadc23d17368c91217067816745c331 /Src/jobs.c
parent653d6a0dd95668eb3ad0d92de985cf14c1f65a8d (diff)
downloadzsh-3257f6b8d561cdf8805744d2a988b4bf414249fc.tar.gz
zsh-3257f6b8d561cdf8805744d2a988b4bf414249fc.tar.xz
zsh-3257f6b8d561cdf8805744d2a988b4bf414249fc.zip
27134: Close SHTTY on exec.
27135: POSIX_JOBS leaves MONITOR on in subshell and doesn't save
parent job table.
Diffstat (limited to 'Src/jobs.c')
-rw-r--r--Src/jobs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Src/jobs.c b/Src/jobs.c
index 8e48ed4b8..df7d9d689 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -1292,6 +1292,8 @@ clearjobtab(int monitor)
 {
     int i;
 
+    if (isset(POSIXJOBS))
+	oldmaxjob = 0;
     for (i = 1; i <= maxjob; i++) {
 	/*
 	 * See if there is a jobtable worth saving.
@@ -1299,7 +1301,7 @@ clearjobtab(int monitor)
 	 * once for each subshell of a shell with job control,
 	 * so doesn't create a leak.
 	 */
-	if (monitor && jobtab[i].stat)
+	if (monitor && !isset(POSIXJOBS) && jobtab[i].stat)
 	    oldmaxjob = i+1;
 	else if (jobtab[i].stat & STAT_INUSE)
 	    freejob(jobtab + i, 0);