summaryrefslogtreecommitdiff
path: root/package/bash/bash32-018
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-10-07 18:23:11 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-10-07 18:23:11 +0000
commit0c6c85cbfa09476e06866760d1efbc541860a838 (patch)
tree3fb4b4d55899f32a79fea6c0d4058c76df594fc0 /package/bash/bash32-018
parent79d42d3238dd7c9f39fdb20715a9b68c8e9252e1 (diff)
- pull patches 018..024
Diffstat (limited to 'package/bash/bash32-018')
-rw-r--r--package/bash/bash32-01898
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_ */