summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorFelipe Pena <felipensp@gmail.com>2012-06-23 15:16:13 -0300
committerFelipe Pena <felipensp@gmail.com>2012-06-23 15:16:13 -0300
commit5e36306feb8ce2b43eb494d5c486fd341b0a1ea7 (patch)
treeaafd08200509f83a0a8b183bb8f7d58c469b2d80 /ext/reflection/php_reflection.c
parent2418791731a2d4b983bccb73d8b8835044f66673 (diff)
parentc3f34796a053f5ff1016d872f8c339e32468783f (diff)
downloadphp-git-5e36306feb8ce2b43eb494d5c486fd341b0a1ea7.tar.gz
Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3: - Improved fix for #62384
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index ab5b15cbd4..ee76afbc02 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2925,12 +2925,10 @@ ZEND_METHOD(reflection_method, invokeArgs)
fcc.object_ptr = object;
/*
- * Closure::__invoke() actually expects a copy of zend_function, so that it
- * frees it after the invoking.
+ * Copy the zend_function when calling via handler (e.g. Closure::__invoke())
*/
- if (obj_ce == zend_ce_closure && object &&
- strlen(mptr->common.function_name) == sizeof(ZEND_INVOKE_FUNC_NAME)-1 &&
- memcmp(mptr->common.function_name, ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0) {
+ if (mptr->type == ZEND_INTERNAL_FUNCTION &&
+ (mptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_HANDLER) != 0) {
fcc.function_handler = _copy_function(mptr TSRMLS_CC);
}