From 607be654fde997743ca17e20b57802429528f922 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 10 Aug 2021 17:10:35 +0200 Subject: [PATCH] Fixed bug #81342 Allow arbitrary whitespace, not just horizontal spaces. --- NEWS | 4 ++++ Zend/zend_language_scanner.l | 2 +- ext/tokenizer/tests/bug81342.phpt | 29 +++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 ext/tokenizer/tests/bug81342.phpt diff --git a/NEWS b/NEWS index ba639803048..ef38ed361f3 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,10 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.1.0beta3 +- Core: + . Fixed bug #81342 (New ampersand token parsing depends on new line after it). + (Nikita) + - Date: . Fixed bug #79580 (date_create_from_format misses leap year). (Derick) . Fixed bug #80963 (DateTimeZone::getTransitions() truncated). (Derick) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 3f56ea82087..cc424bbec0a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1858,7 +1858,7 @@ NEWLINE ("\r"|"\n"|"\r\n") RETURN_TOKEN(T_SR); } -"&"{TABS_AND_SPACES}("$"|"...") { +"&"[ \t\r\n]*("$"|"...") { yyless(1); RETURN_TOKEN(T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG); } diff --git a/ext/tokenizer/tests/bug81342.phpt b/ext/tokenizer/tests/bug81342.phpt new file mode 100644 index 00000000000..57d89de3df6 --- /dev/null +++ b/ext/tokenizer/tests/bug81342.phpt @@ -0,0 +1,29 @@ +--TEST-- +Bug #81342: New ampersand token parsing depends on new line after it +--FILE-- +getTokenName(), "\n"; +} + +?> +--EXPECT-- +T_OPEN_TAG +T_VARIABLE +T_WHITESPACE +T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG +T_WHITESPACE +T_VARIABLE +; +T_WHITESPACE +T_VARIABLE +T_WHITESPACE +T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG +T_WHITESPACE +T_VARIABLE +; +T_WHITESPACE