diff options
| author | Xinchen Hui <laruence@gmail.com> | 2018-06-18 11:33:48 +0800 |
|---|---|---|
| committer | Xinchen Hui <laruence@gmail.com> | 2018-06-18 11:33:48 +0800 |
| commit | 4d69bbeee79c6a94348935ad071b6c7c05dd8eae (patch) | |
| tree | 24ee53ae11960e297dafea4666dfaf30fd30f350 /ext/tokenizer/tokenizer.c | |
| parent | 24f70961546503fcd22101c476a76cb745583787 (diff) | |
| download | php-git-4d69bbeee79c6a94348935ad071b6c7c05dd8eae.tar.gz | |
Fixed bug #76437 (token_get_all with TOKEN_PARSE flag fails to recognise close tag)
Diffstat (limited to 'ext/tokenizer/tokenizer.c')
| -rw-r--r-- | ext/tokenizer/tokenizer.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index ef9d1362b7..cb68fd4087 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -191,8 +191,16 @@ void on_event(zend_php_scanner_event event, int token, int line, void *context) switch (event) { case ON_TOKEN: - if (token == END) break; - add_token(token_stream, token, LANG_SCNG(yy_text), LANG_SCNG(yy_leng), line); + { + if (token == END) break; + /* Specical cases */ + if (token == ';' && LANG_SCNG(yy_leng) == sizeof("?>") - 1) { + token = T_CLOSE_TAG; + } else if (token == T_ECHO && LANG_SCNG(yy_leng) == sizeof("<?=") - 1) { + token = T_OPEN_TAG_WITH_ECHO; + } + add_token(token_stream, token, LANG_SCNG(yy_text), LANG_SCNG(yy_leng), line); + } break; case ON_FEEDBACK: tokens_ht = Z_ARRVAL_P(token_stream); |
