bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bash-3.2 Official Patch 18


From: Chet Ramey
Subject: Bash-3.2 Official Patch 18
Date: Fri, 24 Aug 2007 15:34:48 -0400

                             BASH PATCH REPORT
                             =================

Bash-Release: 3.2
Patch-ID: bash32-018

Bug-Reported-by:        osicka@post.cz
Bug-Reference-ID:       <228.177-19682-1132061412-1179356692@post.cz>
Bug-Reference-URL:      
http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html

Bug-Description:

In certain cases, bash can lose the saved status of a background job, though
it should still be reported by `wait'.  Bash can also loop infinitely after
creating and waiting for 4096 jobs.

Patch:

*** ../bash-20070510/jobs.c     Thu Mar  8 16:05:50 2007
--- jobs.c      Fri May 18 11:40:14 2007
***************
*** 784,792 ****
      {
        old = js.j_firstj++;
        while (js.j_firstj != old)
        {
          if (js.j_firstj >= js.j_jobslots)
            js.j_firstj = 0;
!         if (jobs[js.j_firstj])
            break;
          js.j_firstj++;
--- 784,794 ----
      {
        old = js.j_firstj++;
+       if (old >= js.j_jobslots)
+       old = js.j_jobslots - 1;
        while (js.j_firstj != old)
        {
          if (js.j_firstj >= js.j_jobslots)
            js.j_firstj = 0;
!         if (jobs[js.j_firstj] || js.j_firstj == old)  /* needed if old == 0 */
            break;
          js.j_firstj++;
***************
*** 798,806 ****
      {
        old = js.j_lastj--;
        while (js.j_lastj != old)
        {
          if (js.j_lastj < 0)
            js.j_lastj = js.j_jobslots - 1;
!         if (jobs[js.j_lastj])
            break;
          js.j_lastj--;
--- 800,810 ----
      {
        old = js.j_lastj--;
+       if (old < 0)
+       old = 0;
        while (js.j_lastj != old)
        {
          if (js.j_lastj < 0)
            js.j_lastj = js.j_jobslots - 1;
!         if (jobs[js.j_lastj] || js.j_lastj == old)    /* needed if old == 
js.j_jobslots */
            break;
          js.j_lastj--;
***************
*** 964,968 ****
    realloc_jobs_list ();
  
!   return (js.j_lastj);
  }
  
--- 975,983 ----
    realloc_jobs_list ();
  
! #ifdef DEBUG
!   itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) 
? js.j_lastj + 1 : 0);
! #endif
! 
!   return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
  }
  
*** ../bash-3.2/patchlevel.h    Thu Apr 13 08:31:04 2006
--- patchlevel.h        Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 17
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 18
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                       Live Strong.  No day but today.
Chet Ramey, ITS, CWRU    chet@case.edu    http://cnswww.cns.cwru.edu/~chet/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]