about summary refs log tree commit diff
path: root/Src/parse.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2012-12-21 11:28:33 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2012-12-21 11:28:33 +0000
commit841e60c3408bc9b5eb679efd5cb4f7285cf799e8 (patch)
tree835950783704ccc23a8c81d069414ebe63d18e67 /Src/parse.c
parenta9feb3b28acae7e27fdd9a4337192d6c0bc84a13 (diff)
downloadzsh-841e60c3408bc9b5eb679efd5cb4f7285cf799e8.tar.gz
zsh-841e60c3408bc9b5eb679efd5cb4f7285cf799e8.tar.xz
zsh-841e60c3408bc9b5eb679efd5cb4f7285cf799e8.zip
this prevent process-based features from working in their arguments
Diffstat (limited to 'Src/parse.c')
-rw-r--r--Src/parse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/parse.c b/Src/parse.c
index 0f5d99cef..753080d70 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -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 {