summaryrefslogtreecommitdiff
path: root/debian/patches/bash31-009.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/bash31-009.dpatch')
-rwxr-xr-xdebian/patches/bash31-009.dpatch85
1 files changed, 85 insertions, 0 deletions
diff --git a/debian/patches/bash31-009.dpatch b/debian/patches/bash31-009.dpatch
new file mode 100755
index 0000000..ec1eee1
--- /dev/null
+++ b/debian/patches/bash31-009.dpatch
@@ -0,0 +1,85 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Upstream patch bash31-009
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-009
+
+Bug-Reported-by: Joshua Neuheisel <jneuheisel@gmail.com>
+Bug-Reference-ID: <25d873330601140820v4ad8efd2t8bf683b073c138b3@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00062.html
+
+Bug-Description:
+
+Under some circumstances, background (asynchronous) jobs can set the terminal
+process group incorrectly. This can cause a foreground process (including
+the foreground shell) to get read errors and exit.
+
+Patch:
+
+*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
+--- jobs.c Wed Feb 1 13:55:38 2006
+***************
+*** 620,625 ****
+ * the parent gives it away.
+ *
+ */
+! if (job_control && newjob->pgrp)
+ give_terminal_to (newjob->pgrp, 0);
+ }
+--- 634,642 ----
+ * the parent gives it away.
+ *
++ * Don't give the terminal away if this shell is an asynchronous
++ * subshell.
++ *
+ */
+! if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
+ give_terminal_to (newjob->pgrp, 0);
+ }
+***************
+*** 1656,1660 ****
+ shell's process group (we could be in the middle of a
+ pipeline, for example). */
+! if (async_p == 0 && pipeline_pgrp != shell_pgrp)
+ give_terminal_to (pipeline_pgrp, 0);
+
+--- 1743,1747 ----
+ shell's process group (we could be in the middle of a
+ pipeline, for example). */
+! if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
+ give_terminal_to (pipeline_pgrp, 0);
+
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 8
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 9
+
+ #endif /* _PATCHLEVEL_H_ */