diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/params.c | 1 | ||||
-rw-r--r-- | Src/parse.c | 2 | ||||
-rw-r--r-- | Test/C04funcdef.ztst | 17 |
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 |