| Dmitry Stogov 2005-10-21, 6:56 pm |
| dmitry Fri Oct 21 09:22:10 2005 EDT
Modified files:
/ZendEngine2 zend_language_scanner.l
/ZendEngine2/tests bug31341.phpt
Log:
Fixed bug #31341 (escape on curly inconsistent)
http://cvs.php.net/diff.php/ZendEng...5&r2=1.136&ty=u
Index: ZendEngine2/zend_language_scanner.l
diff -u ZendEngine2/zend_language_scanner.l:1.135 ZendEngine2/zend_language_scanner.l:1.136
--- ZendEngine2/zend_language_scanner.l:1.135 Fri Oct 21 05:33:04 2005
+++ ZendEngine2/zend_language_scanner.l Fri Oct 21 09:22:10 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.l,v 1.135 2005/10/21 09:33:04 dmitry Exp $ */
+/* $Id: zend_language_scanner.l,v 1.136 2005/10/21 13:22:10 dmitry Exp $ */
#define yyleng SCNG(yy_leng)
#define yytext SCNG(yy_text)
@@ -2428,6 +2428,13 @@
}
+< ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC
>"\\{$" {
+ zendlval->value.str.val = estrndup("{$", sizeof("{$")-1);
+ zendlval->value.str.len = sizeof("{$")-1;
+ zendlval->type = IS_STRING;
+ return T_STRING;
+}
+
< ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC
>"\\"{ANY_CHAR} {
switch (yytext[1]) {
case 'n':
@@ -2445,9 +2452,6 @@
case '$':
zendlval->value.lval = (long) yytext[1];
break;
- case '{':
- zendlval->value.lval = (long) yytext[1];
- break;
default:
if (!zend_copy_string_value(zendlval, yytext, yyleng, CG(literal_type) TSRMLS_CC)) {
return 0;
http://cvs.php.net/diff.php/ZendEng...1.1&r2=1.2&ty=u
Index: ZendEngine2/tests/bug31341.phpt
diff -u /dev/null ZendEngine2/tests/bug31341.phpt:1.2
--- /dev/null Fri Oct 21 09:22:10 2005
+++ ZendEngine2/tests/bug31341.phpt Fri Oct 21 09:22:10 2005
@@ -0,0 +1,29 @@
+--TEST--
+Bug #31341 (escape on curly inconsistent)
+--FILE--
+<?php
+$a = array(
+ "$ \{ ",
+ " \{ $",
+ " \{$ ",
+ " $\{ ",
+ " \$\{ ",
+ " \{\$ ",
+ "\$ \{ ",
+ " \{ \$",
+ "% \{ ");
+
+foreach ($a as $v) {
+ echo("'$v'\n");
+}
+?>
+--EXPECT--
+'$ \{ '
+' \{ $'
+' {$ '
+' $\{ '
+' $\{ '
+' \{$ '
+'$ \{ '
+' \{ $'
+'% \{ '
|