about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2011-09-15 14:04:51 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2011-09-15 14:04:51 +0000
commit3dba9a8614e15292ef27cf81c202a39a37e4fff7 (patch)
treecf2a137cfcbe6cbfb20e3c0ef37477820a563c37
parenta0700c54400fdfbed7244354f2c207414558745b (diff)
downloadzsh-3dba9a8614e15292ef27cf81c202a39a37e4fff7.tar.gz
zsh-3dba9a8614e15292ef27cf81c202a39a37e4fff7.tar.xz
zsh-3dba9a8614e15292ef27cf81c202a39a37e4fff7.zip
29776: fix case of double quotes in double-quote-style
parsing where end character is something else
-rw-r--r--ChangeLog6
-rw-r--r--Src/lex.c2
-rw-r--r--Test/D08cmdsubst.ztst8
3 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e05d71c6d..b52361aa6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-09-15  Peter Stephenson  <pws@csr.com>
 
+	* 29776 (modified as noted): Src/lex.c, Test/D08cmdsubst.ztst:
+	double quotes are not special in double-quote-style parsing
+	if the end character is something else.
+
 	* 29773: Marco Hinz: Completion/Unix/Type/_perl_modules:
 	complete some missed modules.
 
@@ -15413,5 +15417,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5466 $
+* $Revision: 1.5467 $
 *****************************************************
diff --git a/Src/lex.c b/Src/lex.c
index 51aaa76ef..90c4effd9 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -1567,7 +1567,7 @@ dquote_parse(char endchar, int sub)
 		err = (!brct-- && math);
 	    break;
 	case '"':
-	    if (intick || ((endchar == ']' || !endchar) && !bct))
+	    if (intick || (endchar != '"' && !bct))
 		break;
 	    if (bct) {
 		add(Dnull);
diff --git a/Test/D08cmdsubst.ztst b/Test/D08cmdsubst.ztst
index 9962c6cad..5661b0aaa 100644
--- a/Test/D08cmdsubst.ztst
+++ b/Test/D08cmdsubst.ztst
@@ -98,3 +98,11 @@
  echo `echo $?`
 0:Non-empty command substitution inherits status
 >1
+
+ echo $(( ##\" ))
+ echo $(echo \")
+ echo $((echo \"); echo OK)
+0:Handling of backslash double quote in parenthesised substitutions
+>34
+>"
+>" OK