summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <p.w.stephenson@ntlworld.com>2017-09-04 21:36:46 +0100
committerPeter Stephenson <p.w.stephenson@ntlworld.com>2017-09-04 21:36:46 +0100
commit5a8155f7b7ab8f3cab1f95d4dba5ed49de0ab77c (patch)
tree93e954a473fa844062b61909c6f33d9406db231d
parent1e536747aee3d39d7e960add67f19fcf6e9ee284 (diff)
downloadzsh-5a8155f7b7ab8f3cab1f95d4dba5ed49de0ab77c.tar.gz
zsh-5a8155f7b7ab8f3cab1f95d4dba5ed49de0ab77c.tar.xz
zsh-5a8155f7b7ab8f3cab1f95d4dba5ed49de0ab77c.zip
41633: Fix problem backgrounding function definitions.
Owing to being marked as simple sublists the instruction to
background was ignored.  This applied to anonymous functions.
-rw-r--r--ChangeLog6
-rw-r--r--Src/parse.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ccfc461b..e51e5c47d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-04  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* 41633: Src/parse.c: make sure function definitions including
+	anonymous functions put into the background are run in the
+	background.
+
 2017-09-04  Daniel Shahaf  <d.s@daniel.shahaf.name>
 
 	* 41621: Completion/Unix/Command/_mkdir: Honour the 'command'
diff --git a/Src/parse.c b/Src/parse.c
index 27052527d..6e0856bbc 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -808,8 +808,13 @@ par_sublist(int *cmplx)
 				 WC_SUBLIST_END),
 			     f, (e - 1 - p), c);
 	    cmdpop();
-	} else
+	} else {
+	    if (tok == AMPER || tok == AMPERBANG) {
+		c = 1;
+		*cmplx |= c;
+	    }		
 	    set_sublist_code(p, WC_SUBLIST_END, f, (e - 1 - p), c);
+	}
 	return 1;
     } else {
 	ecused--;