From 711be83d49dfc886cf76e6a8b69272f5fb4912ef Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Tue, 17 Sep 2002 12:42:11 +0000 Subject: [PATCH] MFZE1 - threading fix --- Zend/zend.c | 15 +++++++++++++++ Zend/zend.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/Zend/zend.c b/Zend/zend.c index e420d1a7df..3b85831770 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -497,6 +497,21 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions, i } +#ifdef ZTS +/* 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(TSRMLS_D) +{ + zend_compiler_globals *compiler_globals = ts_resource(compiler_globals_id); + + compiler_globals_ctor(compiler_globals, tsrm_ls); + zend_startup_constants(TSRMLS_C); + zend_copy_constants(EG(zend_constants), global_constants_table); +} +#endif + + void zend_shutdown(TSRMLS_D) { #ifdef ZEND_WIN32 diff --git a/Zend/zend.h b/Zend/zend.h index 393203d7f3..ed1beb0637 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -394,6 +394,10 @@ typedef int (*zend_write_func_t)(const char *str, uint str_length); int zend_startup(zend_utility_functions *utility_functions, char **extensions, int start_builtin_functions); void zend_shutdown(TSRMLS_D); +#ifdef ZTS +void zend_post_startup(TSRMLS_D); +#endif + void zend_set_utility_values(zend_utility_values *utility_values); BEGIN_EXTERN_C() -- 2.40.0