Re: com php-src: Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config): NEWS Zend/zend.c
| From: | Dmitry Stogov | Date: | Thu, 10 May 2012 09:24:02 +0000 |
| Subject: | Re: com php-src: Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config): NEWS Zend/zend.c | ||
| References: | 1 2 3 4 5 | Groups: | php.cvs php.internals |
| Request: | Send a blank email to internals+get-60525@lists.php.net to get a copy of this message | ||
On 05/05/2012 06:57 PM, Laruence wrote:
Hi Dmitry: On Sat, May 5, 2012 at 6:38 PM, Laruence<laruence@php.net> wrote:ok. In case you tested it, then your patch is fine. Thanks. Dmitry.On Sat, May 5, 2012 at 2:36 PM, Dmitry Stogov<dmitry@zend.com> wrote:Hi Laruence, Thank you for sending this. I'm not sure if the patch is completely correct. With the patch all the threads share the single copy of script_encoding_list and when one thread terminates it calls compiler_globals_dtor() and frees the script_encoding_list. But other threads still keep reference to it. I think we have to duplicate script_encoding_list for each thread in the same way as we do for CG(function_table).after a further exam, this is right, there is a mechanism for newthread re-configure inis(zend_ini_refresh_caches). then new thread will have a copy.
right, thanksand this should use free, I will fix it . however for now it's dead codes, so no bug feedback. :) thanksAlso I noticed a related issue. At zend.c compiler_globals_dtor() CG(script_encoding_list) deallocated using free() and in zend_multibyte.c zend_multibyte_set_script_encoding() using efree(). I suppose the second place has to be fixed. I would appreciate if you could look into the problems.okey, I will, thanks :)-- Laruence Xinchen Hui http://www.laruence.com/Thanks. Dmitry. On 05/03/2012 06:51 PM, Laruence wrote:Hi, Dmitry:you may want to review this, :)thanksOn Thu, May 3, 2012 at 10:39 PM, Xinchen Hui<laruence@php.net> wrote:Commit: 72f19e9a8bcf5712b24fa333a26616eff19ac1ce Author: Xinchen Hui<laruence@php.net> Thu, 3 May 201222:39:53 +0800 Parents: d74d88fbb9c29b1dd5ff05a54b72cf7c9250955c Branches: PHP-5.4 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=72f19e9a8bcf5712b24fa333a26616eff19ac1ce Log: Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config) Bugs: https://bugs.php.net/61922 Changed paths: M NEWS M Zend/zend.c Diff: diff --git a/NEWS b/NEWS index 8796cf4..9ef6abf 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,8 @@ PHPNEWS (Laruence)- Core: + . Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config).+ (Laruence). Fixed missing bound check in iptcparse(). (chris at chiappa.net) . Fixed bug #61827 (incorrect \e processing on Windows) (Anatoliy) . Fixed bug #61761 ('Overriding' a private static method with a different diff --git a/Zend/zend.c b/Zend/zend.c index dd299f1..37a1a27 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -781,6 +781,8 @@ void zend_register_standard_ini_entries(TSRMLS_D) /* {{{ */ void zend_post_startup(TSRMLS_D) /* {{{ */ { #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); @@ -795,7 +797,12 @@ void zend_post_startup(TSRMLS_D) /* {{{ */zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC); free(compiler_globals->function_table); free(compiler_globals->class_table); - compiler_globals_ctor(compiler_globals, tsrm_ls); + if ((script_encoding_list = (zend_encoding**)compiler_globals->script_encoding_list)) {+ compiler_globals_ctor(compiler_globals, tsrm_ls); + compiler_globals->script_encoding_list = (constzend_encoding **)script_encoding_list;+ } else { + compiler_globals_ctor(compiler_globals, tsrm_ls); + } free(EG(zend_constants)); executor_globals_ctor(executor_globals, tsrm_ls); global_persistent_list =&EG(persistent_list);-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php