summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_API.c2
-rw-r--r--Zend/zend_compile.h2
-rw-r--r--Zend/zend_language_scanner.h2
-rw-r--r--Zend/zend_language_scanner.l21
-rw-r--r--ext/tokenizer/tokenizer.c4
5 files changed, 16 insertions, 15 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 2e89bddc47..5f558c4930 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -4530,7 +4530,7 @@ static zend_result get_default_via_ast(zval *default_value_zval, const char *def
zend_string *code = zend_string_concat3(
"<?php ", sizeof("<?php ") - 1, default_value, strlen(default_value), ";", 1);
- ast = zend_compile_string_to_ast(code, &ast_arena, "");
+ ast = zend_compile_string_to_ast(code, &ast_arena, ZSTR_EMPTY_ALLOC());
zend_string_release(code);
if (!ast) {
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index b91e0038a4..13d7883edb 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -798,7 +798,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type);
ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename);
ZEND_API zend_op_array *compile_filename(int type, zval *filename);
ZEND_API zend_ast *zend_compile_string_to_ast(
- zend_string *code, struct _zend_arena **ast_arena, const char *filename);
+ zend_string *code, struct _zend_arena **ast_arena, zend_string *filename);
ZEND_API int zend_execute_scripts(int type, zval *retval, int file_count, ...);
ZEND_API int open_file_for_scanning(zend_file_handle *file_handle);
ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size);
diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h
index e3897c69a8..c6ac8eb387 100644
--- a/Zend/zend_language_scanner.h
+++ b/Zend/zend_language_scanner.h
@@ -75,7 +75,7 @@ typedef struct _zend_nest_location {
BEGIN_EXTERN_C()
ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state);
ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state);
-ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename);
+ZEND_API void zend_prepare_string_for_scanning(zval *str, zend_string *filename);
ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, const zend_encoding *old_encoding);
ZEND_API zend_result zend_multibyte_set_filter(const zend_encoding *onetime_encoding);
ZEND_API zend_result zend_lex_tstring(zval *zv, zend_lexer_ident_ref ident_ref);
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 2679acf7fe..4452d7d000 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -669,7 +669,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
}
ZEND_API zend_ast *zend_compile_string_to_ast(
- zend_string *code, zend_arena **ast_arena, const char *filename) {
+ zend_string *code, zend_arena **ast_arena, zend_string *filename) {
zval code_zv;
bool original_in_compilation;
zend_lex_state original_lex_state;
@@ -737,11 +737,10 @@ zend_op_array *compile_filename(int type, zval *filename)
return retval;
}
-ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename)
+ZEND_API void zend_prepare_string_for_scanning(zval *str, zend_string *filename)
{
char *buf;
size_t size, old_len;
- zend_string *new_compiled_filename;
/* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */
old_len = Z_STRLEN_P(str);
@@ -773,10 +772,7 @@ ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename)
}
yy_scan_buffer(buf, size);
-
- new_compiled_filename = zend_string_init(filename, strlen(filename), 0);
- zend_set_compiled_filename(new_compiled_filename);
- zend_string_release_ex(new_compiled_filename, 0);
+ zend_set_compiled_filename(filename);
CG(zend_lineno) = 1;
CG(increment_lineno) = 0;
RESET_DOC_COMMENT();
@@ -809,6 +805,7 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
zend_lex_state original_lex_state;
zend_op_array *op_array = NULL;
zval tmp;
+ zend_string *filename_str;
if (ZSTR_LEN(source_string) == 0) {
return NULL;
@@ -817,7 +814,9 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
ZVAL_STR_COPY(&tmp, source_string);
zend_save_lexical_state(&original_lex_state);
- zend_prepare_string_for_scanning(&tmp, filename);
+ filename_str = zend_string_init(filename, strlen(filename), 0);
+ zend_prepare_string_for_scanning(&tmp, filename_str);
+ zend_string_release(filename_str);
BEGIN(ST_IN_SCRIPTING);
op_array = zend_compile(ZEND_EVAL_CODE);
@@ -851,13 +850,15 @@ zend_result highlight_file(const char *filename, zend_syntax_highlighter_ini *sy
return SUCCESS;
}
-void highlight_string(zend_string *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, const char *str_name)
+void highlight_string(zend_string *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, const char *filename)
{
zend_lex_state original_lex_state;
zval str_zv;
+ zend_string *filename_str = zend_string_init(filename, strlen(filename), 0);
ZVAL_STR_COPY(&str_zv, str);
zend_save_lexical_state(&original_lex_state);
- zend_prepare_string_for_scanning(&str_zv, str_name);
+ zend_prepare_string_for_scanning(&str_zv, filename_str);
+ zend_string_release(filename_str);
BEGIN(INITIAL);
zend_highlight(syntax_highlighter_ini);
if (SCNG(script_filtered)) {
diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c
index 43296760e4..fba4c0a126 100644
--- a/ext/tokenizer/tokenizer.c
+++ b/ext/tokenizer/tokenizer.c
@@ -358,7 +358,7 @@ static bool tokenize(zval *return_value, zend_string *source, zend_class_entry *
ZVAL_STR_COPY(&source_zval, source);
zend_save_lexical_state(&original_lex_state);
- zend_prepare_string_for_scanning(&source_zval, "");
+ zend_prepare_string_for_scanning(&source_zval, ZSTR_EMPTY_ALLOC());
LANG_SCNG(yy_state) = yycINITIAL;
zend_hash_init(&interned_strings, 0, NULL, NULL, 0);
@@ -493,7 +493,7 @@ static bool tokenize_parse(
CG(in_compilation) = 1;
zend_save_lexical_state(&original_lex_state);
- zend_prepare_string_for_scanning(&source_zval, "");
+ zend_prepare_string_for_scanning(&source_zval, ZSTR_EMPTY_ALLOC());
array_init(&token_stream);
ctx.tokens = &token_stream;