mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Delay releasing closures until after observer end
This commit is contained in:
parent
4935e10fc8
commit
8e49d7f32f
@ -695,7 +695,9 @@ static ZEND_NAMED_FUNCTION(zend_closure_internal_handler) /* {{{ */
|
||||
{
|
||||
zend_closure *closure = (zend_closure*)ZEND_CLOSURE_OBJECT(EX(func));
|
||||
closure->orig_internal_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
OBJ_RELEASE((zend_object*)closure);
|
||||
// Assign to EX(this) so that it is released after observer checks etc.
|
||||
ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS);
|
||||
Z_OBJ(EX(This)) = &closure->std;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
@ -7,9 +7,7 @@ zend_test.observer.enabled=1
|
||||
zend_test.observer.observe_all=1
|
||||
--FILE--
|
||||
<?php
|
||||
$closure = strlen(...);
|
||||
var_dump($closure('test'));
|
||||
|
||||
var_dump(strlen(...)('test'));
|
||||
echo 'DONE' . PHP_EOL;
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
Loading…
Reference in New Issue
Block a user