Bug #69430 [Opn]: token_get_all has new irrecoverable errors

From: Date: Sun, 12 Apr 2015 10:36:56 +0000
Subject: Bug #69430 [Opn]: token_get_all has new irrecoverable errors
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-191996@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69430&edit=1 ID: 69430 Updated by: nikic@php.net Reported by: lauri dot kentta+php-bugs at gmail dot com Summary: token_get_all has new irrecoverable errors Status: Open Type: Bug Package: Scripting Engine problem PHP Version: master-Git-2015-04-12 (Git) -Assigned To: +Assigned To: nikic Block user comment: N Private report: N New Comment: Good point. I changed these fatals to ParseExceptions to make it possible to handle them gracefully at all, but you're right that throwing from token_get_all() will be a problem as well for some usages. I'd probably go with returning E_ERROR tokens in this case, as we already do it internally. It would be good to still be able to access the exceptions that are thrown in some way. Previous Comments: ------------------------------------------------------------------------ [2015-04-12 10:28:10] lauri dot kentta+php-bugs at gmail dot com Description: ------------ Previously, token_get_all would handle even invalid input. This is no longer the case, since some people added unrecoverable errors to the lexer (lex_scan) for unicode escapes and invalid octal literals. This means that token_get_all can't be used for custom highlighting anymore, because invalid scripts won't produce any output. Interestingly highlight_string is still working, but I couldn't see why. The commits that probably cause the problem: commit bae46f307c2d0cdef9b8f5426adcc46920776700 Author: Andrea Faulds <ajf@ajf.me> Date: Fri Dec 19 00:40:59 2014 +0000 Unicode Codepoint Escape Syntax commit 5f29b980514867f1a09969ca6a1c1f5fb00c3027 Author: Andrea Faulds <ajf@ajf.me> Date: Fri Jan 9 06:32:36 2015 +0000 Error on invalid octal (fixes PHPSadness #31) commit a8bf1c5d8f5755b53492e58040cfe88150eb57b6 Author: Nikita Popov <nikic@php.net> Date: Sat Mar 21 20:10:19 2015 +0100 Throw ParseException from lexer Test script: --------------- <?php var_dump(token_get_all('<?php 09 "\u{bar}"')); Expected result: ---------------- Some meaningful tokens such as: T_OPEN_TAG <?php T_LNUMBER 09 T_CONSTANT_ENCAPSED_STRING "\u{bar}" or T_OPEN_TAG <?php T_LNUMBER_INVALID 09 T_CONSTANT_ENCAPSED_STRING_INVALID "\u{bar}" or even T_OPEN_TAG <?php T_ERROR 09 T_ERROR "\u{bar}" Actual result: -------------- ParseException: Invalid numeric literal ParseException: Invalid UTF-8 codepoint escape sequence ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=69430&edit=1

« previous php.bugs (#191996) next »