|
# --- ROCK-COPYRIGHT-NOTE-BEGIN ---
|
|
#
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
# Please add additional copyright information _after_ the line containing
|
|
# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
|
|
# the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
|
|
#
|
|
# ROCK Linux: rock-src/package/base/bash/bash2/avoid_WCONTINUED-1.patch
|
|
# ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf
|
|
#
|
|
# This patch file is dual-licensed. It is available under the license the
|
|
# patched project is licensed under, as long as it is an OpenSource license
|
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
|
# of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# --- ROCK-COPYRIGHT-NOTE-END ---
|
|
|
|
Patch copied from: http://www.linuxfromscratch.org/lfs/view/development/chapter03/patches.html
|
|
-stf
|
|
|
|
Submitted By: Jeremy Utley <jeremy@linuxfromscratch.org>
|
|
Date: 2004-10-13
|
|
Initial Package Version: 3.0
|
|
Upstream Status: Submitted Upstream
|
|
Origin: Originally created by Greg Schafer
|
|
Description: Bash-3.0 has a execution problem with newer Glibc's. This patch,
|
|
submitted to bash-bugs by Tim Waugh, fixes the problem. See:
|
|
http://lists.gnu.org/archive/html/bug-bash/2004-09/msg00081.html
|
|
Patch also contains a slight code change taken from Fedora SRPM.
|
|
|
|
|
|
diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
|
|
--- bash-3.0.orig/jobs.c 2004-10-12 08:50:11.643481280 +0000
|
|
+++ bash-3.0/jobs.c 2004-10-12 08:51:35.110792320 +0000
|
|
@@ -2476,6 +2476,7 @@
|
|
PROCESS *child;
|
|
pid_t pid;
|
|
int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
|
|
+ static int wcontinued_not_supported = 0;
|
|
|
|
call_set_current = children_exited = 0;
|
|
last_stopped_job = NO_JOB;
|
|
@@ -2489,7 +2490,15 @@
|
|
: 0;
|
|
if (sigchld || block == 0)
|
|
waitpid_flags |= WNOHANG;
|
|
+ retry:
|
|
+ if (wcontinued_not_supported)
|
|
+ waitpid_flags &= ~WCONTINUED;
|
|
pid = WAITPID (-1, &status, waitpid_flags);
|
|
+ if (pid == -1 && errno == EINVAL)
|
|
+ {
|
|
+ wcontinued_not_supported = 1;
|
|
+ goto retry;
|
|
+ }
|
|
|
|
/* The check for WNOHANG is to make sure we decrement sigchld only
|
|
if it was non-zero before we called waitpid. */
|