I don't understand this changeset. Why is it needed / what bug does it
fix? If op_array == NULL, won't it return right after that anyway?

Nikita

On Sat, Aug 25, 2012 at 3:47 PM, Xinchen Hui <larue...@php.net> wrote:
> Commit:    d92a89fe52e89eef9527d1e27b5bb051ae24bc54
> Author:    Xinchen Hui <larue...@php.net>         Sat, 25 Aug 2012 21:47:53 
> +0800
> Parents:   55d680e9682e3218b333d929bf3b24ddfe83c436
> Branches:  PHP-5.3
>
> Link:       
> http://git.php.net/?p=php-src.git;a=commitdiff;h=d92a89fe52e89eef9527d1e27b5bb051ae24bc54
>
> Log:
> Fixed bug (segfault while build with zts and GOTO vm-kind)
>
> Changed paths:
>   M  NEWS
>   M  Zend/zend_vm_execute.skl
>   M  Zend/zend_vm_gen.php
>
>
> Diff:
> diff --git a/NEWS b/NEWS
> index 9af7977..69cbb2a 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -3,6 +3,7 @@ PHP                                                           
>              NEWS
>  ?? ??? 2012, PHP 5.3.16
>
>  - Core:
> +  . Fixed bug (segfault while build with zts and GOTO vm-kind). (Laruence)
>    . Fixed bug #62763 (register_shutdown_function and extending class).
>      (Laruence)
>    . Fixed bug #62744 (dangling pointers made by zend_disable_class). 
> (Laruence)
> diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
> index 18d0e29..e5a143e 100644
> --- a/Zend/zend_vm_execute.skl
> +++ b/Zend/zend_vm_execute.skl
> @@ -4,8 +4,8 @@ ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array 
> TSRMLS_DC)
>  {
>         zend_execute_data *execute_data;
>         zend_bool nested = 0;
> -       zend_bool original_in_execution = EG(in_execution);
>         {%HELPER_VARS%}
> +       {%EXECUTION_STATUS%}
>
>         {%INTERNAL_LABELS%}
>
> diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php
> index 86d6503..2fff1a9 100644
> --- a/Zend/zend_vm_gen.php
> +++ b/Zend/zend_vm_gen.php
> @@ -850,6 +850,13 @@ function gen_executor($f, $skl, $spec, $kind, 
> $executor_name, $initializer_name,
>                                                 skip_blanks($f, $m[1], 
> $m[3]."\n");
>                                         }
>                                         break;
> +                               case "EXECUTION_STATUS":
> +                                       if ($kind != ZEND_VM_KIND_GOTO) {
> +                                               out($f, $m[1] . "zend_bool 
> original_in_execution = EG(in_execution);\n");
> +                                       } else {
> +                                               out($f, $m[1] . "zend_bool 
> original_in_execution = op_array? EG(in_execution) : 0;\n");
> +                                       }
> +                                       break;
>                                 case "INTERNAL_LABELS":
>                                         if ($kind == ZEND_VM_KIND_GOTO) {
>                                           // Emit array of labels of opcode 
> handlers and code for
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to