diff options
Diffstat (limited to 'source/a/bash/patches/bash31-009')
-rw-r--r-- | source/a/bash/patches/bash31-009 | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/a/bash/patches/bash31-009 b/source/a/bash/patches/bash31-009 new file mode 100644 index 000000000..8ef229585 --- /dev/null +++ b/source/a/bash/patches/bash31-009 @@ -0,0 +1,66 @@ + 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_ */ |