]>
Commit | Line | Data |
---|---|---|
6e5277ed ER |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 3.1 | |
5 | Patch-ID: bash31-009 | |
6 | ||
7 | Bug-Reported-by: Joshua Neuheisel <jneuheisel@gmail.com> | |
8 | Bug-Reference-ID: <25d873330601140820v4ad8efd2t8bf683b073c138b3@mail.gmail.com> | |
9 | Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00062.html | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | Under some circumstances, background (asynchronous) jobs can set the terminal | |
14 | process group incorrectly. This can cause a foreground process (including | |
15 | the foreground shell) to get read errors and exit. | |
16 | ||
17 | Patch: | |
18 | ||
19 | *** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005 | |
20 | --- jobs.c Wed Feb 1 13:55:38 2006 | |
21 | *************** | |
22 | *** 620,625 **** | |
23 | * the parent gives it away. | |
24 | * | |
25 | */ | |
26 | ! if (job_control && newjob->pgrp) | |
27 | give_terminal_to (newjob->pgrp, 0); | |
28 | } | |
29 | --- 634,642 ---- | |
30 | * the parent gives it away. | |
31 | * | |
32 | + * Don't give the terminal away if this shell is an asynchronous | |
33 | + * subshell. | |
34 | + * | |
35 | */ | |
36 | ! if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) | |
37 | give_terminal_to (newjob->pgrp, 0); | |
38 | } | |
39 | *************** | |
40 | *** 1656,1660 **** | |
41 | shell's process group (we could be in the middle of a | |
42 | pipeline, for example). */ | |
43 | ! if (async_p == 0 && pipeline_pgrp != shell_pgrp) | |
44 | give_terminal_to (pipeline_pgrp, 0); | |
45 | ||
46 | --- 1743,1747 ---- | |
47 | shell's process group (we could be in the middle of a | |
48 | pipeline, for example). */ | |
49 | ! if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) | |
50 | give_terminal_to (pipeline_pgrp, 0); | |
51 | ||
52 | *** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 | |
53 | --- patchlevel.h Wed Dec 7 13:48:42 2005 | |
54 | *************** | |
55 | *** 26,30 **** | |
56 | looks for to find the patch level (for the sccs version string). */ | |
57 | ||
58 | ! #define PATCHLEVEL 8 | |
59 | ||
60 | #endif /* _PATCHLEVEL_H_ */ | |
61 | --- 26,30 ---- | |
62 | looks for to find the patch level (for the sccs version string). */ | |
63 | ||
64 | ! #define PATCHLEVEL 9 | |
65 | ||
66 | #endif /* _PATCHLEVEL_H_ */ |