php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #63428
Patch bug63428.patch revision 2012-11-03 16:14 UTC by laruence@php.net

Patch bug63428.patch for *General Issues Bug #63428

Patch version 2012-11-03 16:14 UTC

Return to Bug #63428 | Download this patch
Patch Revisions:

Developer: laruence@php.net

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 Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Apr 20 04:01:28 2024 UTC