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

Reply via email to