Re: [PATCH] Closures and reflection improvements
| From: | Dmitry Stogov | Date: | Mon, 11 Aug 2008 08:51:44 +0000 |
| Subject: | Re: [PATCH] Closures and reflection improvements | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-39820@lists.php.net to get a copy of this message | ||
Hi Marcus,
I committed the ZE part of your patch with exception for
zend_error(E_ERROR, "Cannot destroy active lambda function");
Catching this error may cause memory corruption and crash.
Thanks. Dmitry.
Marcus Boerger wrote:
Hello Johannes, Christian, Felipe, and here 5.3 and 6.0 versions that also have most memleaks fixed. marcus Saturday, August 9, 2008, 12:34:59 AM, you wrote:Hello Christian, Johannes,Friday, August 8, 2008, 11:48:37 PM, you wrote:Hello Christian,I updated your patch for 5.3 due to recent changes. It works pretty fine for me. Care to test again, especially with your new tests? Note that test ext/reflection/tests/closures_001.phpt does not work for me and I have no clue why. Well, besides that obviously the closure class no longer has an entry for __closure, so it is more a question of how to know when to add this. Also, it appears you do not have a cvs account, or did I overlook something?Modified patch attached, including the updated reflection tests.Ok, it is actually easy to fix, we just check whether the thing is a closure and add the method manually, done. New patch attached.Johannes, this also adresses the switch from E_ERROR to E_RECOVERABLE_ERROR for the closure handlers.best regards marcusMonday, August 4, 2008, 12:59:13 PM, you wrote:Christian,On Mon, 2008-08-04 at 11:33 +0400, Dmitry Stogov wrote:http://www.christian-seiler.de/temp/php/2008-07-24-reflection/reflection-closure-fixes-5.3.patch http://www.christian-seiler.de/temp/php/2008-07-24-reflection/reflection-closure-fixes-6.patchwithout applying and testing the patch:- zend_hash_apply_with_arguments(&ce->function_table TSRMLS_CC,(apply_func_args_t) _addmethod, 3, &ce, return_value, filter);+ zend_hash_apply_with_arguments(&ce->function_table TSRMLS_CC,(apply_func_args_t) _addmethod, 3, &ce, return_value, filter, intern->obj);that looks a bit strange, probably you want 4 instead of 3 now?johannesBest regards, MarcusBest regards, MarcusBest regards, Marcus