summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2016-09-30 11:34:15 +0100
committerPeter Stephenson <pws@zsh.org>2016-09-30 11:34:15 +0100
commitbb2bbcc944e5b2a089f27e9b988e1740a517cedd (patch)
treec16ac525ae35a97e466aa4f54cfe8e5e4b46f06b
parentd08674ef8c8e4920c2ebfa02f0bef86812f051ee (diff)
downloadzsh-bb2bbcc944e5b2a089f27e9b988e1740a517cedd.tar.gz
zsh-bb2bbcc944e5b2a089f27e9b988e1740a517cedd.zip
39517: back off 39502 (WC_ASSIGN causes fork in pipe).
This isn't a robust fix as WC_ASSIGNs simply precede the main wordcode.
-rw-r--r--ChangeLog2
-rw-r--r--Src/exec.c2
-rw-r--r--Test/A01grammar.ztst15
3 files changed, 12 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index d6db9d982..ce891fc6b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2016-09-30 Peter Stephenson <p.stephenson@samsung.com>
+ * 39517: back off 39502, this isn't a robust fix.
+
* 39498: Src/parmas.c,Src/zsh.h: use PRIVILEGED option to
decide on problematic parameter imports.
diff --git a/Src/exec.c b/Src/exec.c
index e253d7b9e..2714edbcb 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1844,7 +1844,7 @@ execpline2(Estate state, wordcode pcode,
/* if we are doing "foo | bar" where foo is a current *
* shell command, do foo in a subshell and do the *
* rest of the pipeline in the current shell. */
- if ((wc_code(code) >= WC_CURSH || wc_code(code) == WC_ASSIGN)
+ if ((wc_code(code) >= WC_CURSH)
&& (how & Z_SYNC)) {
int synch[2];
struct timeval bgtime;
diff --git a/Test/A01grammar.ztst b/Test/A01grammar.ztst
index 0b1085c3e..1ad73c599 100644
--- a/Test/A01grammar.ztst
+++ b/Test/A01grammar.ztst
@@ -757,9 +757,12 @@
>}
>Stuff here
- x=1
- x=2 | echo $x
- echo $x
-0:Assignment-only current shell commands in LHS of pipelin
->1
->1
+## This problem is hard to fix without significant changes to how
+## the shell forks for a pipeline.
+#
+# x=1
+# x=2 | echo $x
+# echo $x
+# 0:Assignment-only current shell commands in LHS of pipelin
+# >1
+# >1