diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index cd31878eb9d..0c2b10ae82c 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1558,7 +1558,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 +( +) +;