/* Unlink the global (r/o) copies of the class, function and constant tables, * and use a fresh r/w copy for the startup thread */ void zend_post_startup(void) /* {{{ */ { #ifdef ZTS zend_encoding **script_encoding_list; zend_compiler_globals *compiler_globals = ts_resource(compiler_globals_id); zend_executor_globals *executor_globals = ts_resource(executor_globals_id); *GLOBAL_FUNCTION_TABLE = *compiler_globals->function_table; *GLOBAL_CLASS_TABLE = *compiler_globals->class_table; *GLOBAL_CONSTANTS_TABLE = *executor_globals->zend_constants; short_tags_default = CG(short_tags); compiler_options_default = CG(compiler_options); zend_destroy_rsrc_list(&EG(persistent_list)); free(compiler_globals->function_table); free(compiler_globals->class_table); if ((script_encoding_list = (zend_encoding **)compiler_globals->script_encoding_list)) { compiler_globals_ctor(compiler_globals); compiler_globals->script_encoding_list = (const zend_encoding **)script_encoding_list; } else { compiler_globals_ctor(compiler_globals); } free(EG(zend_constants)); virtual_cwd_deactivate(); executor_globals_ctor(executor_globals); global_persistent_list = &EG(persistent_list); zend_copy_ini_directives(); #else virtual_cwd_deactivate(); #endif }
/* Unlink the global (r/o) copies of the class, function and constant tables, * and use a fresh r/w copy for the startup thread */ int zend_post_startup(void) /* {{{ */ { #ifdef ZTS zend_encoding **script_encoding_list; zend_compiler_globals *compiler_globals = ts_resource(compiler_globals_id); zend_executor_globals *executor_globals = ts_resource(executor_globals_id); *GLOBAL_FUNCTION_TABLE = *compiler_globals->function_table; *GLOBAL_CLASS_TABLE = *compiler_globals->class_table; *GLOBAL_CONSTANTS_TABLE = *executor_globals->zend_constants; short_tags_default = CG(short_tags); compiler_options_default = CG(compiler_options); zend_destroy_rsrc_list(&EG(persistent_list)); free(compiler_globals->function_table); free(compiler_globals->class_table); if ((script_encoding_list = (zend_encoding **)compiler_globals->script_encoding_list)) { compiler_globals_ctor(compiler_globals); compiler_globals->script_encoding_list = (const zend_encoding **)script_encoding_list; } else { compiler_globals_ctor(compiler_globals); } free(EG(zend_constants)); executor_globals_ctor(executor_globals); global_persistent_list = &EG(persistent_list); zend_copy_ini_directives(); #endif if (zend_post_startup_cb) { int (*cb)(void) = zend_post_startup_cb; zend_post_startup_cb = NULL; if (cb() != SUCCESS) { return FAILURE; } } return SUCCESS; }