diff options
author | Stanislav Malyshev <stas@php.net> | 2015-01-31 23:17:24 -0800 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2015-01-31 23:17:24 -0800 |
commit | b64cafdb9e9dccdc43845601f49774523379371f (patch) | |
tree | d4053ba4405eef1f17efc71a86977ea73f5142e3 | |
parent | 6a960b6d1b2b3cdbce7d6faf9e58087297a45887 (diff) | |
parent | dbc0a80b23e222801aa3f26ca56dfb52290c986d (diff) | |
download | php-git-b64cafdb9e9dccdc43845601f49774523379371f.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
Added test and possible fix for https://bugs.php.net/bug.php?id=67068
-rw-r--r-- | Zend/zend_closures.c | 1 | ||||
-rw-r--r-- | ext/reflection/tests/bug67068.phpt | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index 1993ed95c7..53465af026 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -443,6 +443,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent closure->func = *func; closure->func.common.prototype = NULL; + closure->func.common.fn_flags |= ZEND_ACC_CLOSURE; if ((scope == NULL) && (this_ptr != NULL)) { /* use dummy scope if we're binding an object without specifying a scope */ diff --git a/ext/reflection/tests/bug67068.phpt b/ext/reflection/tests/bug67068.phpt new file mode 100644 index 0000000000..35c1b1674f --- /dev/null +++ b/ext/reflection/tests/bug67068.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #67068 (ReflectionFunction::getClosure returns something that doesn't report as a closure) +--FILE-- +<?php +class MyClass { + public function method() {} +} + +$object = new MyClass; +$reflector = new \ReflectionMethod($object, 'method'); +$closure = $reflector->getClosure($object); + +$closureReflector = new \ReflectionFunction($closure); + +var_dump($closureReflector->isClosure()); +?> +--EXPECT-- +bool(true)
\ No newline at end of file |