Skip to content

Commit 3370b5f

Browse files
committed
Accept zend_string in zend_prepare_string_for_scanning
1 parent ba89dcb commit 3370b5f

File tree

5 files changed

+16
-15
lines changed

5 files changed

+16
-15
lines changed

Zend/zend_API.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4530,7 +4530,7 @@ static zend_result get_default_via_ast(zval *default_value_zval, const char *def
45304530
zend_string *code = zend_string_concat3(
45314531
"<?php ", sizeof("<?php ") - 1, default_value, strlen(default_value), ";", 1);
45324532

4533-
ast = zend_compile_string_to_ast(code, &ast_arena, "");
4533+
ast = zend_compile_string_to_ast(code, &ast_arena, ZSTR_EMPTY_ALLOC());
45344534
zend_string_release(code);
45354535

45364536
if (!ast) {

Zend/zend_compile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type);
798798
ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename);
799799
ZEND_API zend_op_array *compile_filename(int type, zval *filename);
800800
ZEND_API zend_ast *zend_compile_string_to_ast(
801-
zend_string *code, struct _zend_arena **ast_arena, const char *filename);
801+
zend_string *code, struct _zend_arena **ast_arena, zend_string *filename);
802802
ZEND_API int zend_execute_scripts(int type, zval *retval, int file_count, ...);
803803
ZEND_API int open_file_for_scanning(zend_file_handle *file_handle);
804804
ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size);

Zend/zend_language_scanner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ typedef struct _zend_nest_location {
7575
BEGIN_EXTERN_C()
7676
ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state);
7777
ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state);
78-
ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename);
78+
ZEND_API void zend_prepare_string_for_scanning(zval *str, zend_string *filename);
7979
ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, const zend_encoding *old_encoding);
8080
ZEND_API zend_result zend_multibyte_set_filter(const zend_encoding *onetime_encoding);
8181
ZEND_API zend_result zend_lex_tstring(zval *zv, zend_lexer_ident_ref ident_ref);

Zend/zend_language_scanner.l

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
669669
}
670670

671671
ZEND_API zend_ast *zend_compile_string_to_ast(
672-
zend_string *code, zend_arena **ast_arena, const char *filename) {
672+
zend_string *code, zend_arena **ast_arena, zend_string *filename) {
673673
zval code_zv;
674674
bool original_in_compilation;
675675
zend_lex_state original_lex_state;
@@ -737,11 +737,10 @@ zend_op_array *compile_filename(int type, zval *filename)
737737
return retval;
738738
}
739739

740-
ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename)
740+
ZEND_API void zend_prepare_string_for_scanning(zval *str, zend_string *filename)
741741
{
742742
char *buf;
743743
size_t size, old_len;
744-
zend_string *new_compiled_filename;
745744

746745
/* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */
747746
old_len = Z_STRLEN_P(str);
@@ -773,10 +772,7 @@ ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename)
773772
}
774773

775774
yy_scan_buffer(buf, size);
776-
777-
new_compiled_filename = zend_string_init(filename, strlen(filename), 0);
778-
zend_set_compiled_filename(new_compiled_filename);
779-
zend_string_release_ex(new_compiled_filename, 0);
775+
zend_set_compiled_filename(filename);
780776
CG(zend_lineno) = 1;
781777
CG(increment_lineno) = 0;
782778
RESET_DOC_COMMENT();
@@ -809,6 +805,7 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
809805
zend_lex_state original_lex_state;
810806
zend_op_array *op_array = NULL;
811807
zval tmp;
808+
zend_string *filename_str;
812809

813810
if (ZSTR_LEN(source_string) == 0) {
814811
return NULL;
@@ -817,7 +814,9 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
817814
ZVAL_STR_COPY(&tmp, source_string);
818815

819816
zend_save_lexical_state(&original_lex_state);
820-
zend_prepare_string_for_scanning(&tmp, filename);
817+
filename_str = zend_string_init(filename, strlen(filename), 0);
818+
zend_prepare_string_for_scanning(&tmp, filename_str);
819+
zend_string_release(filename_str);
821820
BEGIN(ST_IN_SCRIPTING);
822821
op_array = zend_compile(ZEND_EVAL_CODE);
823822

@@ -851,13 +850,15 @@ zend_result highlight_file(const char *filename, zend_syntax_highlighter_ini *sy
851850
return SUCCESS;
852851
}
853852

854-
void highlight_string(zend_string *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, const char *str_name)
853+
void highlight_string(zend_string *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, const char *filename)
855854
{
856855
zend_lex_state original_lex_state;
857856
zval str_zv;
857+
zend_string *filename_str = zend_string_init(filename, strlen(filename), 0);
858858
ZVAL_STR_COPY(&str_zv, str);
859859
zend_save_lexical_state(&original_lex_state);
860-
zend_prepare_string_for_scanning(&str_zv, str_name);
860+
zend_prepare_string_for_scanning(&str_zv, filename_str);
861+
zend_string_release(filename_str);
861862
BEGIN(INITIAL);
862863
zend_highlight(syntax_highlighter_ini);
863864
if (SCNG(script_filtered)) {

ext/tokenizer/tokenizer.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ static bool tokenize(zval *return_value, zend_string *source, zend_class_entry *
358358
ZVAL_STR_COPY(&source_zval, source);
359359
zend_save_lexical_state(&original_lex_state);
360360

361-
zend_prepare_string_for_scanning(&source_zval, "");
361+
zend_prepare_string_for_scanning(&source_zval, ZSTR_EMPTY_ALLOC());
362362

363363
LANG_SCNG(yy_state) = yycINITIAL;
364364
zend_hash_init(&interned_strings, 0, NULL, NULL, 0);
@@ -493,7 +493,7 @@ static bool tokenize_parse(
493493
CG(in_compilation) = 1;
494494
zend_save_lexical_state(&original_lex_state);
495495

496-
zend_prepare_string_for_scanning(&source_zval, "");
496+
zend_prepare_string_for_scanning(&source_zval, ZSTR_EMPTY_ALLOC());
497497
array_init(&token_stream);
498498

499499
ctx.tokens = &token_stream;

0 commit comments

Comments
 (0)