diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 17469fab0c11e..389d8f5b7e50b 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -323,6 +323,9 @@ struct _zend_php_scanner_globals { int heredoc_indentation; bool heredoc_indentation_uses_spaces; + /* Short tags - either from defaults or tokenizer extension overrides */ + bool short_tags; + /* original (unfiltered) script */ unsigned char *script_org; size_t script_org_size; diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index ca32329a557f2..ae8c2443dcf2d 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -57,6 +57,8 @@ typedef struct _zend_lex_state { zend_ast *ast; zend_arena *ast_arena; + + bool short_tags; } zend_lex_state; typedef struct _zend_heredoc_label { diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c73a50948d6bc..aae0cba07e61c 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -246,6 +246,7 @@ ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state) lex_state->on_event = SCNG(on_event); lex_state->on_event_context = SCNG(on_event_context); + lex_state->short_tags = SCNG(short_tags); lex_state->ast = CG(ast); lex_state->ast_arena = CG(ast_arena); @@ -289,6 +290,7 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state) SCNG(on_event) = lex_state->on_event; SCNG(on_event_context) = lex_state->on_event_context; + SCNG(short_tags) = lex_state->short_tags; CG(ast) = lex_state->ast; CG(ast_arena) = lex_state->ast_arena; @@ -542,6 +544,7 @@ ZEND_API zend_result open_file_for_scanning(zend_file_handle *file_handle) /* Reset the scanner for scanning the new file */ SCNG(yy_in) = file_handle; SCNG(yy_start) = NULL; + SCNG(short_tags) = CG(short_tags); if (size != (size_t)-1) { if (CG(multibyte)) { @@ -731,6 +734,7 @@ ZEND_API void zend_prepare_string_for_scanning(zval *str, zend_string *filename) SCNG(yy_in) = NULL; SCNG(yy_start) = NULL; + SCNG(short_tags) = CG(short_tags); buf = Z_STRVAL_P(str); size = old_len; @@ -2239,7 +2243,7 @@ string: RETURN_OR_SKIP_TOKEN(T_OPEN_TAG); } /* Degenerate case: " +--EXPECTF-- +[[%d,"