From 7a61984a2bf42f2632a8c62245a8496a3e2009cd Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 2 Dec 2020 10:19:32 +0100 Subject: [PATCH] Fixed bug #80462 --- NEWS | 4 ++++ Zend/zend_language_scanner.l | 2 +- ext/tokenizer/tests/bug80462.phpt | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 ext/tokenizer/tests/bug80462.phpt diff --git a/NEWS b/NEWS index 979924f72e8..b1a0c50776e 100644 --- a/NEWS +++ b/NEWS @@ -47,6 +47,10 @@ PHP NEWS - Tidy: . Fixed bug #77594 (ob_tidyhandler is never reset). (cmb) +- Tokenizer: + . Fixed bug #80462 (Nullsafe operator tokenize with TOKEN_PARSE flag fails). + (Nikita) + - XML: . XmlParser opaque object renamed to XMLParser for consistency with other XML objects. (girgias) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d1c5b85cf24..b9e61270590 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1564,7 +1564,7 @@ NEWLINE ("\r"|"\n"|"\r\n") "?->" { yy_push_state(ST_LOOKING_FOR_PROPERTY); - return T_NULLSAFE_OBJECT_OPERATOR; + RETURN_TOKEN(T_NULLSAFE_OBJECT_OPERATOR); } {WHITESPACE}+ { diff --git a/ext/tokenizer/tests/bug80462.phpt b/ext/tokenizer/tests/bug80462.phpt new file mode 100644 index 00000000000..068cea0833e --- /dev/null +++ b/ext/tokenizer/tests/bug80462.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #80462: Nullsafe operator tokenize with TOKEN_PARSE flag fails +--FILE-- +b();', TOKEN_PARSE) as $token) { + echo $token->getTokenName(), "\n"; +} + +?> +--EXPECT-- +T_OPEN_TAG +T_VARIABLE +T_WHITESPACE += +T_WHITESPACE +T_VARIABLE +T_NULLSAFE_OBJECT_OPERATOR +T_STRING +( +) +;