summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2015-05-29 12:17:18 +0100
committerPeter Stephenson <pws@zsh.org>2015-05-29 12:17:18 +0100
commitcba1d41ffc5c544d01e2ba67be414914b45e80e7 (patch)
treec03f65a34ddacb54dcda85fe5d5a1a412b5d1850
parentda603d0a002128661fa4497043f0efed1072f9ef (diff)
downloadzsh-cba1d41ffc5c544d01e2ba67be414914b45e80e7.tar.gz
zsh-cba1d41ffc5c544d01e2ba67be414914b45e80e7.tar.xz
zsh-cba1d41ffc5c544d01e2ba67be414914b45e80e7.zip
2037: ${functions[foo]} shouldn't be unmetafied.
When passed back from the parameter-specific "get" handler it's
still in the shell's internals, so remains metafied.

This caused mayhem with UTF-8 characters in function bodies.
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/parameter.c5
2 files changed, 5 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 75d21bc11..fcaacaa54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-29  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* 20237: Src/Modules/parameter.c: $unctions[foo] shouldn't be
+	unmetafied when passed as parameter body.
+
 2015-05-28  Daniel Hahler  <zsh@thequod.de>
 
 	* 35098: Completion/Unix/Command/_git: provide --amend also with
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c
index 55157a90c..04d448529 100644
--- a/Src/Modules/parameter.c
+++ b/Src/Modules/parameter.c
@@ -410,11 +410,6 @@ getfunction(UNUSED(HashTable ht), const char *name, int dis)
 	    } else
 		h = dyncat(start, t);
 	    zsfree(t);
-	    /*
-	     * TBD: Is this unmetafy correct?  Surely as this
-	     * is a parameter value it stays metafied?
-	     */
-	    unmetafy(h, NULL);
 
 	    if (shf->redir) {
 		t = getpermtext(shf->redir, NULL, 1);