diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-02 10:19:32 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-02 10:19:32 +0100 |
commit | 7a61984a2bf42f2632a8c62245a8496a3e2009cd (patch) | |
tree | 760467261b9cbe848c8d4d72b7ec07ff8dd24e54 | |
parent | 5aaffc8095eeb69407855b33d1939dd5ebd619ca (diff) | |
download | php-git-7a61984a2bf42f2632a8c62245a8496a3e2009cd.tar.gz |
Fixed bug #80462
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | Zend/zend_language_scanner.l | 2 | ||||
-rw-r--r-- | ext/tokenizer/tests/bug80462.phpt | 22 |
3 files changed, 27 insertions, 1 deletions
@@ -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 d1c5b85cf2..b9e6127059 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1564,7 +1564,7 @@ NEWLINE ("\r"|"\n"|"\r\n") <ST_IN_SCRIPTING>"?->" { yy_push_state(ST_LOOKING_FOR_PROPERTY); - return T_NULLSAFE_OBJECT_OPERATOR; + RETURN_TOKEN(T_NULLSAFE_OBJECT_OPERATOR); } <ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY>{WHITESPACE}+ { diff --git a/ext/tokenizer/tests/bug80462.phpt b/ext/tokenizer/tests/bug80462.phpt new file mode 100644 index 0000000000..068cea0833 --- /dev/null +++ b/ext/tokenizer/tests/bug80462.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #80462: Nullsafe operator tokenize with TOKEN_PARSE flag fails +--FILE-- +<?php + +foreach (PhpToken::tokenize('<?php $foo = $a?->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 +( +) +; |