@@ -669,7 +669,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
669
669
}
670
670
671
671
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) {
673
673
zval code_zv;
674
674
bool original_in_compilation;
675
675
zend_lex_state original_lex_state;
@@ -737,11 +737,10 @@ zend_op_array *compile_filename(int type, zval *filename)
737
737
return retval;
738
738
}
739
739
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)
741
741
{
742
742
char *buf;
743
743
size_t size, old_len;
744
- zend_string *new_compiled_filename;
745
744
746
745
/* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */
747
746
old_len = Z_STRLEN_P (str);
@@ -773,10 +772,7 @@ ZEND_API void zend_prepare_string_for_scanning(zval *str, const char *filename)
773
772
}
774
773
775
774
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);
780
776
CG (zend_lineno) = 1 ;
781
777
CG (increment_lineno) = 0 ;
782
778
RESET_DOC_COMMENT ();
@@ -809,6 +805,7 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
809
805
zend_lex_state original_lex_state;
810
806
zend_op_array *op_array = NULL ;
811
807
zval tmp;
808
+ zend_string *filename_str;
812
809
813
810
if (ZSTR_LEN (source_string) == 0 ) {
814
811
return NULL ;
@@ -817,7 +814,9 @@ zend_op_array *compile_string(zend_string *source_string, const char *filename)
817
814
ZVAL_STR_COPY (&tmp, source_string);
818
815
819
816
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);
821
820
BEGIN (ST_IN_SCRIPTING);
822
821
op_array = zend_compile (ZEND_EVAL_CODE);
823
822
@@ -851,13 +850,15 @@ zend_result highlight_file(const char *filename, zend_syntax_highlighter_ini *sy
851
850
return SUCCESS;
852
851
}
853
852
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 )
855
854
{
856
855
zend_lex_state original_lex_state;
857
856
zval str_zv;
857
+ zend_string *filename_str = zend_string_init (filename, strlen (filename), 0 );
858
858
ZVAL_STR_COPY (&str_zv, str);
859
859
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);
861
862
BEGIN (INITIAL);
862
863
zend_highlight (syntax_highlighter_ini);
863
864
if (SCNG (script_filtered)) {
0 commit comments