Commit: 12e928314fb270db31adc361ac4993b4f0fe000a Author: Nikita Popov <ni...@php.net> Tue, 29 May 2012 18:01:08 +0200 Parents: ad525c288ad83df497ed1a0668915cad61d72e26 Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=12e928314fb270db31adc361ac4993b4f0fe000a Log: Fix segfault when send()ing to a closed generator Changed paths: A Zend/tests/generators/send_after_close.phpt M Zend/zend_generators.c Diff: diff --git a/Zend/tests/generators/send_after_close.phpt b/Zend/tests/generators/send_after_close.phpt new file mode 100644 index 0000000..6a251b2 --- /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 01c9aa3..0cf600a 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); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php