summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/params.c1
-rw-r--r--Src/parse.c2
-rw-r--r--Test/C04funcdef.ztst17
4 files changed, 24 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4edc62b61..57b269b31 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2011-07-28 Peter Stephenson <pws@csr.com>
+ * 29626: Src/parse.c, Test/C04funcdef.ztst: arguments to
+ anonymous functions shouldn't be parsed as command words.
+
* 29602 and subsequent changes: Doc/Zsh/expn.yo: clarify meaning
of filename extension in :r and :e modifiers (which were
slightly inconsistent).
@@ -15176,5 +15179,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5410 $
+* $Revision: 1.5411 $
*****************************************************
diff --git a/Src/params.c b/Src/params.c
index 8a56766f8..fd0872130 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -4193,6 +4193,7 @@ arrfixenv(char *s, char **t)
int
zputenv(char *str)
{
+ DPUTS(!str, "Attempt to put null string into environment.");
#ifdef USE_SET_UNSET_ENV
/*
* If we are using unsetenv() to remove values from the
diff --git a/Src/parse.c b/Src/parse.c
index 5b6f09949..5b8f0af48 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -1465,6 +1465,7 @@ par_funcdef(void)
ecssub = oecssub;
YYERRORV(oecused);
}
+ incmdpos = 0;
zshlex();
} else if (unset(SHORTLOOPS)) {
lineno += oldlineno;
@@ -1720,6 +1721,7 @@ par_simple(int *complex, int nr)
ecssub = oecssub;
YYERROR(oecused);
}
+ incmdpos = 0;
zshlex();
} else {
int ll, sl, c = 0;
diff --git a/Test/C04funcdef.ztst b/Test/C04funcdef.ztst
index 0cc5e5a2f..742d2d0a7 100644
--- a/Test/C04funcdef.ztst
+++ b/Test/C04funcdef.ztst
@@ -1,3 +1,8 @@
+%prep
+
+ mkdir funcdef.tmp
+ cd funcdef.tmp
+
%test
fn1() { return 1; }
@@ -228,6 +233,18 @@
> print Following bit
>}
+ touch yes no
+ () { echo $1 } (y|z)*
+ (echo here)
+ () { echo $* } some (y|z)*
+ () { echo empty };(echo here)
+0:Anonymous function arguments and command arguments
+>yes
+>here
+>some yes
+>empty
+>here
+
%clean
rm -f file.in file.out