com php-src: Implement #72918: negative offset inside a quoted string leads to parse error: Zend/tests/bug72918.phpt Zend/zend_language _parser.y
Zend/zend_language_scanner.l

From: Date: Fri, 14 Oct 2016 11:59:46 +0000
Subject: com php-src: Implement #72918: negative offset inside a quoted string leads to parse error: Zend/tests/bug72918.phpt Zend/zend_language _parser.y
Zend/zend_language_scanner.l
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-95092@lists.php.net to get a copy of this message
Commit: fe4b8e373c99ee9ca57b0c369508f2b8b9f6bcc5 Author: Christoph M. Becker <cmbecker69@gmx.de> Tue, 27 Sep 2016 20:26:16 +0200 Parents: 2083007813e20c4be1d9e4e30e5fd47018f24142 Branches: pull-request/2144 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=fe4b8e373c99ee9ca57b0c369508f2b8b9f6bcc5 Log: Implement #72918: negative offset inside a quoted string leads to parse error We allow negative numeric offsets for the simple syntax inside double-quoted and heredoc strings. Bugs: https://bugs.php.net/72918 Changed paths: A Zend/tests/bug72918.phpt M Zend/zend_language_parser.y M Zend/zend_language_scanner.l Diff: diff --git a/Zend/tests/bug72918.phpt b/Zend/tests/bug72918.phpt new file mode 100644 index 0000000..f3dc1d2 --- /dev/null +++ b/Zend/tests/bug72918.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #72918 (negative offset inside a quoted string leads to parse error) +--FILE-- +<?php +$array = [-3 => 'foo']; +$string = 'abcde'; + +echo "$array[-3]\n"; +echo "$string[-3]\n"; +echo <<<EOT +$array[-3] +$string[-3] + +EOT; +?> +===DONE=== +--EXPECT-- +foo +c +foo +c +===DONE=== diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 957d657..3c71179 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -1249,6 +1249,7 @@ encaps_var: encaps_var_offset: T_STRING { $$ = $1; } | T_NUM_STRING { $$ = $1; } + | '-' T_NUM_STRING { $$ = zend_ast_create(ZEND_AST_UNARY_MINUS, $2); } | T_VARIABLE { $$ = zend_ast_create(ZEND_AST_VAR, $1); } ; diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index fbe9ef7..e2d2a51 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1875,7 +1875,7 @@ inline_char_handler: } <ST_VAR_OFFSET>{TOKENS}|[{}"`] { - /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ + /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); }

« previous php.cvs (#95092) next »