diff options
Diffstat (limited to 'package/bash/bash32-018')
| -rw-r--r-- | package/bash/bash32-018 | 98 | 
1 files changed, 98 insertions, 0 deletions
diff --git a/package/bash/bash32-018 b/package/bash/bash32-018 new file mode 100644 index 000000000..81bfa6754 --- /dev/null +++ b/package/bash/bash32-018 @@ -0,0 +1,98 @@ +			     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 +--- bash-3.2/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 +--- bash-3.2/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_ */  | 
