|
Pete Graner |
3797fb |
BASH PATCH REPORT
|
|
Pete Graner |
3797fb |
=================
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
Bash-Release: 3.2
|
|
Pete Graner |
3797fb |
Patch-ID: bash32-018
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
Bug-Reported-by: osicka@post.cz
|
|
Pete Graner |
3797fb |
Bug-Reference-ID: <228.177-19682-1132061412-1179356692@post.cz>
|
|
Pete Graner |
3797fb |
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
Bug-Description:
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
In certain cases, bash can lose the saved status of a background job, though
|
|
Pete Graner |
3797fb |
it should still be reported by `wait'. Bash can also loop infinitely after
|
|
Pete Graner |
3797fb |
creating and waiting for 4096 jobs.
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
Patch:
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007
|
|
Pete Graner |
3797fb |
--- jobs.c Fri May 18 11:40:14 2007
|
|
Pete Graner |
3797fb |
***************
|
|
Pete Graner |
3797fb |
*** 784,792 ****
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
old = js.j_firstj++;
|
|
Pete Graner |
3797fb |
while (js.j_firstj != old)
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
if (js.j_firstj >= js.j_jobslots)
|
|
Pete Graner |
3797fb |
js.j_firstj = 0;
|
|
Pete Graner |
3797fb |
! if (jobs[js.j_firstj])
|
|
Pete Graner |
3797fb |
break;
|
|
Pete Graner |
3797fb |
js.j_firstj++;
|
|
Pete Graner |
3797fb |
--- 784,794 ----
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
old = js.j_firstj++;
|
|
Pete Graner |
3797fb |
+ if (old >= js.j_jobslots)
|
|
Pete Graner |
3797fb |
+ old = js.j_jobslots - 1;
|
|
Pete Graner |
3797fb |
while (js.j_firstj != old)
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
if (js.j_firstj >= js.j_jobslots)
|
|
Pete Graner |
3797fb |
js.j_firstj = 0;
|
|
Pete Graner |
3797fb |
! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */
|
|
Pete Graner |
3797fb |
break;
|
|
Pete Graner |
3797fb |
js.j_firstj++;
|
|
Pete Graner |
3797fb |
***************
|
|
Pete Graner |
3797fb |
*** 798,806 ****
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
old = js.j_lastj--;
|
|
Pete Graner |
3797fb |
while (js.j_lastj != old)
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
if (js.j_lastj < 0)
|
|
Pete Graner |
3797fb |
js.j_lastj = js.j_jobslots - 1;
|
|
Pete Graner |
3797fb |
! if (jobs[js.j_lastj])
|
|
Pete Graner |
3797fb |
break;
|
|
Pete Graner |
3797fb |
js.j_lastj--;
|
|
Pete Graner |
3797fb |
--- 800,810 ----
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
old = js.j_lastj--;
|
|
Pete Graner |
3797fb |
+ if (old < 0)
|
|
Pete Graner |
3797fb |
+ old = 0;
|
|
Pete Graner |
3797fb |
while (js.j_lastj != old)
|
|
Pete Graner |
3797fb |
{
|
|
Pete Graner |
3797fb |
if (js.j_lastj < 0)
|
|
Pete Graner |
3797fb |
js.j_lastj = js.j_jobslots - 1;
|
|
Pete Graner |
3797fb |
! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */
|
|
Pete Graner |
3797fb |
break;
|
|
Pete Graner |
3797fb |
js.j_lastj--;
|
|
Pete Graner |
3797fb |
***************
|
|
Pete Graner |
3797fb |
*** 964,968 ****
|
|
Pete Graner |
3797fb |
realloc_jobs_list ();
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
! return (js.j_lastj);
|
|
Pete Graner |
3797fb |
}
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
--- 975,983 ----
|
|
Pete Graner |
3797fb |
realloc_jobs_list ();
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
! #ifdef DEBUG
|
|
Pete Graner |
3797fb |
! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
|
|
Pete Graner |
3797fb |
! #endif
|
|
Pete Graner |
3797fb |
!
|
|
Pete Graner |
3797fb |
! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
|
|
Pete Graner |
3797fb |
}
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
|
|
Pete Graner |
3797fb |
--- patchlevel.h Mon Oct 16 14:22:54 2006
|
|
Pete Graner |
3797fb |
***************
|
|
Pete Graner |
3797fb |
*** 26,30 ****
|
|
Pete Graner |
3797fb |
looks for to find the patch level (for the sccs version string). */
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
! #define PATCHLEVEL 17
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
#endif /* _PATCHLEVEL_H_ */
|
|
Pete Graner |
3797fb |
--- 26,30 ----
|
|
Pete Graner |
3797fb |
looks for to find the patch level (for the sccs version string). */
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
! #define PATCHLEVEL 18
|
|
Pete Graner |
3797fb |
|
|
Pete Graner |
3797fb |
#endif /* _PATCHLEVEL_H_ */
|