Nikic:
   you may want to review this.

thanks
On 11/4/12, Xinchen Hui <larue...@php.net> wrote:
> Commit:    7bcb8780e0ed042888f88c78919b7726be9ea931
> Author:    Xinchen Hui <larue...@php.net>         Sun, 4 Nov 2012 12:48:35
> +0800
> Parents:   3c6b0db05285d2374abc392360d6540c32f6ed66
> Branches:  master
>
> Link:
> http://git.php.net/?p=php-src.git;a=commitdiff;h=7bcb8780e0ed042888f88c78919b7726be9ea931
>
> Log:
> Fixed bug #63428 (The behavior of execute() changed)
>
> Bugs:
> https://bugs.php.net/63428
>
> Changed paths:
>   M  Zend/zend_generators.c
>   M  Zend/zend_vm_execute.h
>   M  Zend/zend_vm_execute.skl
>
>
> Diff:
> diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
> index fba62dd..87f0644 100644
> --- a/Zend/zend_generators.c
> +++ b/Zend/zend_generators.c
> @@ -461,6 +461,10 @@ static zend_function
> *zend_generator_get_constructor(zval *object TSRMLS_DC) /*
>
>  void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ */
>  {
> +     if (EG(exception)) {
> +             return;
> +     }
> +
>       /* The generator is already closed, thus can't resume */
>       if (!generator->execute_data) {
>               return;
> diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
> index 8c4b594..7a2cfc8 100644
> --- a/Zend/zend_vm_execute.h
> +++ b/Zend/zend_vm_execute.h
> @@ -419,10 +419,6 @@ ZEND_API void execute_ex(zend_execute_data
> *execute_data TSRMLS_DC)
>
>
>
> -     if (EG(exception)) {
> -             return;
> -     }
> -
>       original_in_execution = EG(in_execution);
>       EG(in_execution) = 1;
>
> @@ -459,9 +455,10 @@ ZEND_API void execute_ex(zend_execute_data
> *execute_data TSRMLS_DC)
>
>  ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
>  {
> -     zend_execute_data *execute_data =
> zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
> -
> -     execute_ex(execute_data TSRMLS_CC);
> +     if (EG(exception)) {
> +             return;
> +     }
> +     execute_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC)
> TSRMLS_CC);
>  }
>
>  static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
> diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
> index 58e5631..2a6fd71 100644
> --- a/Zend/zend_vm_execute.skl
> +++ b/Zend/zend_vm_execute.skl
> @@ -82,10 +82,6 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data
> *execute_data TSRMLS_DC)
>
>       {%INTERNAL_LABELS%}
>
> -     if (EG(exception)) {
> -             return;
> -     }
> -
>       original_in_execution = EG(in_execution);
>       EG(in_execution) = 1;
>
> @@ -110,9 +106,10 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data
> *execute_data TSRMLS_DC)
>
>  ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
>  {
> -     zend_execute_data *execute_data =
> zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
> -
> -     {%EXECUTOR_NAME%}_ex(execute_data TSRMLS_CC);
> +     if (EG(exception)) {
> +             return;
> +     }
> +     {%EXECUTOR_NAME%}_ex(zend_create_execute_data_from_op_array(op_array, 0
> TSRMLS_CC) TSRMLS_CC);
>  }
>
>  {%EXTERNAL_EXECUTOR%}
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
惠新宸        laruence
Senior PHP Engineer
http://www.laruence.com

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

Reply via email to