]> granicus.if.org Git - php/commitdiff
Revert "Check if generator object is created by GENERATOR_CREATE when throw exception...
authorDmitry Stogov <dmitry@zend.com>
Mon, 16 May 2016 08:51:29 +0000 (11:51 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 16 May 2016 08:51:29 +0000 (11:51 +0300)
This reverts commit a9b517c6143a8fab3f704448022e7381b02090ba.

Zend/tests/generators/generator_with_type_check.phpt [deleted file]
Zend/tests/generators/generator_with_type_check_2.phpt [deleted file]
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

diff --git a/Zend/tests/generators/generator_with_type_check.phpt b/Zend/tests/generators/generator_with_type_check.phpt
deleted file mode 100644 (file)
index 871742a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-Generator wit type check
---FILE--
-<?php
-function gen(array $a) { yield; }
-gen(42);
-?>
---EXPECTF--
-Fatal error: Uncaught TypeError: Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check.php on line 3 and defined in %sgenerator_with_type_check.php:2
-Stack trace:
-#0 %sgenerator_with_type_check.php(3): gen(42)
-#1 {main}
-  thrown in %sgenerator_with_type_check.php on line 2
\ No newline at end of file
diff --git a/Zend/tests/generators/generator_with_type_check_2.phpt b/Zend/tests/generators/generator_with_type_check_2.phpt
deleted file mode 100644 (file)
index 352a376..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Generator wit type check
---FILE--
-<?php
-function gen(array $a) { yield; }
-try {
-       gen(42);
-} catch (TypeError $e) {
-       echo $e->getMessage()."\n";
-}
-
-try {
-       foreach (gen(42) as $val) {
-               var_dump($val);
-       }
-} catch (TypeError $e) {
-        echo $e->getMessage()."\n";
-}
-?>
---EXPECTF--
-Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check_2.php on line 4
-Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check_2.php on line 10
\ No newline at end of file
index 2723503b54dccd128b8ba6d2c626ef6f0028443a..2750d8e60a4e853a2eec856007b64beb670ffcc8 100644 (file)
@@ -7159,10 +7159,7 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY)
                if (catch_op_num) {
                        ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[catch_op_num]);
                        ZEND_VM_CONTINUE();
-               } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)
-                /* check if generator object is created by GENERATOR_CREATE */
-                && EX(return_value)
-                && Z_TYPE_P(EX(return_value)) == IS_OBJECT) {
+               } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        zend_generator *generator = zend_get_running_generator(execute_data);
                        zend_generator_close(generator, 1);
                        ZEND_VM_RETURN();
index cbcb7333bd6ce76298fdeaeefd3eed1f7579ab98..5b09255f30c0332636df2895fff5ba94083fd2e3 100644 (file)
@@ -1756,10 +1756,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(
                if (catch_op_num) {
                        ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[catch_op_num]);
                        ZEND_VM_CONTINUE();
-               } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)
-                /* check if generator object is created by GENERATOR_CREATE */
-                && EX(return_value)
-                && Z_TYPE_P(EX(return_value)) == IS_OBJECT) {
+               } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        zend_generator *generator = zend_get_running_generator(execute_data);
                        zend_generator_close(generator, 1);
                        ZEND_VM_RETURN();