1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-05-20 06:56:05 +02:00

this prevent process-based features from working in their arguments

This commit is contained in:
Peter Stephenson 2012-12-21 11:28:33 +00:00
parent a9feb3b28a
commit 841e60c340
3 changed files with 30 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2012-12-21 Peter Stephenson <pws@csr.com>
* 30930: Src/parse.c, Test/D03procsubst.ztst: anonymous
functions shouldn't be marked as simple; this prevented process
based features from working in their arguments.
2012-12-20 Peter Stephenson <p.w.stephenson@ntlworld.com>
* unposted: Config/version.mk: zsh 5.0.1.
@ -401,5 +407,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
* $Revision: 1.5776 $
* $Revision: 1.5777 $
*****************************************************

View File

@ -846,7 +846,7 @@ par_cmd(int *complex)
break;
case FUNC:
cmdpush(CS_FUNCDEF);
par_funcdef();
par_funcdef(complex);
cmdpop();
break;
case DINBRACK:
@ -1420,7 +1420,7 @@ par_subsh(int *complex)
/**/
static void
par_funcdef(void)
par_funcdef(int *complex)
{
int oecused = ecused, num = 0, onp, p, c = 0;
int so, oecssub = ecssub;
@ -1471,6 +1471,7 @@ par_funcdef(void)
if (num == 0) {
/* Anonymous function, possibly with arguments */
incmdpos = 0;
*complex = 1;
}
zshlex();
} else if (unset(SHORTLOOPS)) {
@ -1735,6 +1736,7 @@ par_simple(int *complex, int nr)
if (argc == 0) {
/* Anonymous function, possibly with arguments */
incmdpos = 0;
*complex = 1;
}
zshlex();
} else {

View File

@ -88,3 +88,22 @@
print something=${:-=(echo 'C,D),(F,G)'}
1: Graceful handling of bad substitution in enclosed context
?(eval):1: unterminated `=(...)'
() {
print -n "first: "
cat $1
print -n "second: "
cat $2
} =(echo This becomes argument one) =(echo and this argument two)
function {
print -n "third: "
cat $1
print -n "fourth: "
cat $2
} =(echo This becomes argument three) =(echo and this argument four)
0:Process environment of anonymous functions
>first: This becomes argument one
>second: and this argument two
>third: This becomes argument three
>fourth: and this argument four