summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-03-14 01:08:03 +0300
committerDmitry Stogov <dmitry@zend.com>2018-03-14 01:08:03 +0300
commitd1585a9e3f7c6e3da7177f07c68b250543d8fbf2 (patch)
tree8eed5fe2058e82b66cb3447f12fd119a1117f123 /Zend/zend_compile.c
parent0d6da03f5c3e49b92cf6817ba8a7f8d6f60ee1aa (diff)
downloadphp-git-d1585a9e3f7c6e3da7177f07c68b250543d8fbf2.tar.gz
Revert "Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig."
This reverts commit 0d6da03f5c3e49b92cf6817ba8a7f8d6f60ee1aa.
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 873b963a15..ed90929249 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1690,16 +1690,25 @@ again:
ZVAL_UNDEF(&zv);
start_lineno = CG(zend_lineno);
retval = lex_scan(&zv);
+ if (EG(exception)) {
+ return T_ERROR;
+ }
- if (retval >= T_WHITESPACE) {
- if (EXPECTED(retval < T_OPEN_TAG_WITH_ECHO)) {
+ switch (retval) {
+ case T_COMMENT:
+ case T_DOC_COMMENT:
+ case T_OPEN_TAG:
+ case T_WHITESPACE:
goto again;
- } else if (retval == T_OPEN_TAG_WITH_ECHO) {
- retval = T_ECHO;
- } else if (retval == T_CLOSE_TAG) {
+
+ case T_CLOSE_TAG:
retval = ';'; /* implicit ; */
- }
- } else if (Z_TYPE(zv) != IS_UNDEF) {
+ break;
+ case T_OPEN_TAG_WITH_ECHO:
+ retval = T_ECHO;
+ break;
+ }
+ if (Z_TYPE(zv) != IS_UNDEF) {
elem->ast = zend_ast_create_zval_with_lineno(&zv, 0, start_lineno);
}