diff options
| -rw-r--r-- | Zend/tests/generators/send_after_close.phpt | 14 | ||||
| -rw-r--r-- | Zend/zend_generators.c | 5 |
2 files changed, 19 insertions, 0 deletions
diff --git a/Zend/tests/generators/send_after_close.phpt b/Zend/tests/generators/send_after_close.phpt new file mode 100644 index 0000000000..6a251b2481 --- /dev/null +++ b/Zend/tests/generators/send_after_close.phpt @@ -0,0 +1,14 @@ +--TEST-- +Calls to send() after close should do nothing +--FILE-- +<?php + +function *gen() { } + +$gen = gen(); +$gen->send("Test"); + +?> +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 01c9aa3198..0cf600a922 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -308,6 +308,11 @@ ZEND_METHOD(Generator, send) zend_generator_ensure_initialized(object, generator TSRMLS_CC); + /* The generator is already closed, thus can't send anything */ + if (!generator->execute_data) { + return; + } + /* The sent value was initialized to NULL, so dtor that */ zval_ptr_dtor(generator->send_target->var.ptr_ptr); |
