]> granicus.if.org Git - php/commitdiff
Convert fatal error into EngineException
authorDmitry Stogov <dmitry@zend.com>
Wed, 1 Apr 2015 10:49:11 +0000 (13:49 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 1 Apr 2015 10:49:11 +0000 (13:49 +0300)
Zend/tests/generators/errors/resume_running_generator_error.phpt
Zend/zend_generators.c

index 567d72f3f948305d4780e50feeafc7aa44d641ea..9a39155d389b3316899b04e9fefd4236935c160e 100644 (file)
@@ -5,7 +5,12 @@ It is not possible to resume an already running generator
 
 function gen() {
     $gen = yield;
-    $gen->next();
+    try {
+           $gen->next();
+       } catch (EngineException $e) {
+               echo "\nException: " . $e->getMessage() . "\n";
+       }
+       $gen->next();
 }
 
 $gen = gen();
@@ -14,4 +19,6 @@ $gen->next();
 
 ?>
 --EXPECTF--
+Exception: Cannot resume an already running generator
+
 Fatal error: Cannot resume an already running generator in %s on line %d
index b1fcdea056854b1a6b7908e2142c9a4291b1f8ac..a64f341837955f06a0b031678d11fe644ca8e674 100644 (file)
@@ -303,7 +303,8 @@ ZEND_API void zend_generator_resume(zend_generator *generator) /* {{{ */
        }
 
        if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) {
-               zend_error_noreturn(E_ERROR, "Cannot resume an already running generator");
+               zend_error(E_EXCEPTION | E_ERROR, "Cannot resume an already running generator");
+               return;
        }
 
        /* Drop the AT_FIRST_YIELD flag */