mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Recover from a parse error in include files (before, it could result in a crash under certain circumstances). Fix bug #8663
This commit is contained in:
parent
f3342a5b55
commit
bda9c83a82
@ -696,6 +696,10 @@ ZEND_API void zend_error(int type, const char *format, ...)
|
||||
}
|
||||
|
||||
va_end(args);
|
||||
|
||||
if (type==E_PARSE) {
|
||||
zend_init_compiler_data_structures(CLS_C);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -57,14 +57,15 @@ static void build_runtime_defined_function_key(zval *result, zval *name, zend_op
|
||||
}
|
||||
|
||||
|
||||
static void init_compiler_declarables(CLS_D ELS_DC)
|
||||
static void init_compiler_declarables(CLS_D)
|
||||
{
|
||||
CG(declarables).ticks.type = IS_LONG;
|
||||
CG(declarables).ticks.value.lval = 0;
|
||||
}
|
||||
|
||||
|
||||
void init_compiler(CLS_D ELS_DC)
|
||||
|
||||
void zend_init_compiler_data_structures(CLS_D)
|
||||
{
|
||||
zend_stack_init(&CG(bp_stack));
|
||||
zend_stack_init(&CG(function_call_stack));
|
||||
@ -75,13 +76,19 @@ void init_compiler(CLS_D ELS_DC)
|
||||
CG(active_class_entry) = NULL;
|
||||
zend_llist_init(&CG(list_llist), sizeof(list_llist_element), NULL, 0);
|
||||
zend_llist_init(&CG(dimension_llist), sizeof(int), NULL, 0);
|
||||
zend_hash_init(&CG(filenames_table), 5, NULL, (dtor_func_t) free_estring, 0);
|
||||
CG(handle_op_arrays) = 1;
|
||||
CG(in_compilation) = 0;
|
||||
init_compiler_declarables(CLS_C);
|
||||
}
|
||||
|
||||
|
||||
void init_compiler(CLS_D ELS_DC)
|
||||
{
|
||||
zend_init_compiler_data_structures(CLS_C);
|
||||
zend_init_rsrc_list(ELS_C);
|
||||
CG(unclean_shutdown) = 0;
|
||||
zend_hash_init(&CG(filenames_table), 5, NULL, (dtor_func_t) free_estring, 0);
|
||||
zend_llist_init(&CG(open_files), sizeof(zend_file_handle), (void (*)(void *)) zend_file_handle_dtor, 0);
|
||||
init_compiler_declarables(CLS_C ELS_CC);
|
||||
CG(unclean_shutdown) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -208,6 +208,7 @@ BEGIN_EXTERN_C()
|
||||
|
||||
void init_compiler(CLS_D ELS_DC);
|
||||
void shutdown_compiler(CLS_D);
|
||||
void zend_init_compiler_data_structures(CLS_D);
|
||||
|
||||
extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type CLS_DC);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user