Skip to content

Commit cfd5105

Browse files
committed
reflection: Fix ReflectionFunction::getShortName() for first class callables
Fix fixes an incorrect fix in php#14001.
1 parent 3626e2d commit cfd5105

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Zend/tests/closure_068.phpt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--TEST--
2+
ReflectionFunction::getShortName() returns the short name for first class callables defined in namespaces.
3+
--FILE--
4+
<?php
5+
namespace Foo;
6+
7+
function foo() {
8+
}
9+
$r = new \ReflectionFunction(foo(...));
10+
var_dump($r->getShortName());
11+
?>
12+
--EXPECT--
13+
string(3) "foo"

ext/reflection/php_reflection.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3609,7 +3609,7 @@ ZEND_METHOD(ReflectionFunctionAbstract, getShortName)
36093609
GET_REFLECTION_OBJECT_PTR(fptr);
36103610

36113611
zend_string *name = fptr->common.function_name;
3612-
if (!(fptr->common.fn_flags & ZEND_ACC_CLOSURE)) {
3612+
if ((fptr->common.fn_flags & (ZEND_ACC_CLOSURE | ZEND_ACC_FAKE_CLOSURE)) != ZEND_ACC_CLOSURE) {
36133613
const char *backslash = zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
36143614
if (backslash) {
36153615
RETURN_STRINGL(backslash + 1, ZSTR_LEN(name) - (backslash - ZSTR_VAL(name) + 1));

0 commit comments

Comments
 (0)