Re: com php-src: Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config): NEWS Zend/zend.c
| From: | Laruence | Date: | Sat, 05 May 2012 10:38:38 +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 | Groups: | php.cvs php.internals |
| Request: | Send a blank email to php-cvs+get-68955@lists.php.net to get a copy of this message | ||
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).
right, thanks
>
> Also 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 :)
>
> Thanks. Dmitry.
>
>
>
> On 05/03/2012 06:51 PM, Laruence wrote:
>>
>> Hi, Dmitry:
>>
>> you may want to review this, :)
>>
>> thanks
>> On 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 2012
>>> 22: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 @@ PHP
>>> NEWS
>>> (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 = (const
>>> zend_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
>>>
>>
>>
>>
>
--
Laruence Xinchen Hui
http://www.laruence.com/