commit:     b3cd383722ae22bc2567f1b4f8a875e79dd56bca
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Wed May  9 11:31:34 2018 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Wed May  9 11:31:50 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b3cd3837

app-shells/dash: Fixed subshell regression.

See https://patchwork.kernel.org/patch/10382199/

Closes: https://bugs.gentoo.org/655320
Package-Manager: Portage-2.3.36, Repoman-2.3.9

 .../dash/{dash-0.5.10.ebuild => dash-0.5.10-r1.ebuild}   |  5 ++++-
 app-shells/dash/files/dash-0.5.10-subshells.patch        | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/app-shells/dash/dash-0.5.10.ebuild 
b/app-shells/dash/dash-0.5.10-r1.ebuild
similarity index 95%
rename from app-shells/dash/dash-0.5.10.ebuild
rename to app-shells/dash/dash-0.5.10-r1.ebuild
index 72821681d9b..97e4202bc4d 100644
--- a/app-shells/dash/dash-0.5.10.ebuild
+++ b/app-shells/dash/dash-0.5.10-r1.ebuild
@@ -27,7 +27,10 @@ DEPEND="${RDEPEND}
        virtual/pkgconfig
        libedit? ( static? ( dev-libs/libedit[static-libs] ) )"
 
-PATCHES=( "${FILESDIR}"/${PN}-0.5.9.1-format-security.patch )
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.5.9.1-format-security.patch
+       "${FILESDIR}"/${P}-subshells.patch
+)
 
 src_prepare() {
        if [[ -n "${DEB_PATCH}" ]] ; then

diff --git a/app-shells/dash/files/dash-0.5.10-subshells.patch 
b/app-shells/dash/files/dash-0.5.10-subshells.patch
new file mode 100644
index 00000000000..5943db11e69
--- /dev/null
+++ b/app-shells/dash/files/dash-0.5.10-subshells.patch
@@ -0,0 +1,16 @@
+https://bugs.gentoo.org/655320
+https://patchwork.kernel.org/patch/10382199/
+
+--- dash-0.5.10/src/jobs.c
++++ dash-0.5.10/src/jobs.c
+@@ -975,8 +975,8 @@
+       int st;
+ 
+       TRACE(("waitforjob(%%%d) called\n", jp ? jobno(jp) : 0));
+-      while ((jp && jp->state == JOBRUNNING) || gotsigchld)
+-              dowait(DOWAIT_BLOCK, jp);
++      while (jp ? jp->state == JOBRUNNING : gotsigchld)
++              dowait(jp ? DOWAIT_BLOCK : DOWAIT_NORMAL, jp);
+       if (!jp)
+               return exitstatus;
+       st = getstatus(jp);

Reply via email to