Hi!
I looked at CLI SAPI and found this code, around line 719:
#ifdef ZTS
compiler_globals = ts_resource(compiler_globals_id);
executor_globals = ts_resource(executor_globals_id);
core_globals = ts_resource(core_globals_id);
sapi_globals = ts_resource(sapi_globals_id);
tsrm_ls = ts_resource(0);
#endif
/* startup after we get the above ini override se we get things right */
if (cli_sapi_module.startup(&cli_sapi_module)==FAILURE) {
The problem here is that compiler/executor globals are allocated in
zend_startup, which is called from cli_sapi_module.startup. So what is
actually in compiler_globals and executor_globals is either tsrm_ls if
they are initialized to 0 or random crap if they aren't. Can anybody
explain me where I'm wrong and why this code works?
Stanislav Malyshev, Zend Software Architect
stas@zend.com http://www.zend.com/
(408)253-8829 MSN: stas@zend.com
The problem here is that compiler/executor globals are allocated in
zend_startup, which is called from cli_sapi_module.startup. So what is
actually in compiler_globals and executor_globals is either tsrm_ls if
they are initialized to 0 or random crap if they aren't. Can anybody
explain me where I'm wrong and why this code works?
After a bit more looking into it appears that this code just does
nothing since compiler_globals pointer isn't used in ZTS mode. So I'm
going to delete this code unless I hear objections to it.
Stanislav Malyshev, Zend Software Architect
stas@zend.com http://www.zend.com/
(408)253-8829 MSN: stas@zend.com