From c8899944d7df400f74a48dbb900dbd8c29109e27 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Jul 2025 18:40:18 +0100 Subject: [PATCH 1/2] Zend: Fix anonymous closure names --- Zend/tests/closures/closure_016.phpt | 4 ++-- Zend/zend_API.c | 9 +++------ tests/output/ob_013.phpt | 6 +++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Zend/tests/closures/closure_016.phpt b/Zend/tests/closures/closure_016.phpt index 0f87f20f435aa..33860189a57ea 100644 --- a/Zend/tests/closures/closure_016.phpt +++ b/Zend/tests/closures/closure_016.phpt @@ -42,9 +42,9 @@ Foo::__invoke bool(true) Foo::__invoke bool(true) -Closure::__invoke +{closure:foo():9} bool(true) -Closure::__invoke +{closure:foo():9} bool(true) Closure::__invoke bool(true) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index df8b4252c42ad..e602796970eed 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -4160,13 +4160,10 @@ ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, zend_object *obj if (ce == zend_ce_closure) { const zend_function *fn = zend_get_closure_method_def(Z_OBJ_P(callable)); - if (fn->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) { - if (fn->common.scope) { - return zend_create_member_string(fn->common.scope->name, fn->common.function_name); - } else { - return zend_string_copy(fn->common.function_name); - } + if (fn->common.fn_flags & ZEND_ACC_FAKE_CLOSURE && fn->common.scope) { + return zend_create_member_string(fn->common.scope->name, fn->common.function_name); } + return zend_string_copy(fn->common.function_name); } return zend_string_concat2( diff --git a/tests/output/ob_013.phpt b/tests/output/ob_013.phpt index b42f443ad28cb..c1f9f090b7b31 100644 --- a/tests/output/ob_013.phpt +++ b/tests/output/ob_013.phpt @@ -57,11 +57,11 @@ Array [5] => E::f [6] => E::g [7] => E::__invoke - [8] => Closure::__invoke + [8] => {closure:%s:%d} ) Array ( - [name] => Closure::__invoke + [name] => {closure:%s:%d} [type] => 1 [flags] => 20593 [level] => 8 @@ -161,7 +161,7 @@ Array [8] => Array ( - [name] => Closure::__invoke + [name] => {closure:%s:%d} [type] => 1 [flags] => 20593 [level] => 8 From 6def2a00cc59e7820447009b1726e2f0bd4b50c6 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Thu, 3 Jul 2025 11:57:31 +0100 Subject: [PATCH 2/2] [skip ci] Nit Co-authored-by: Arnaud Le Blanc <365207+arnaud-lb@users.noreply.github.com> --- Zend/zend_API.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index e602796970eed..e05422395ec19 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -4160,7 +4160,7 @@ ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, zend_object *obj if (ce == zend_ce_closure) { const zend_function *fn = zend_get_closure_method_def(Z_OBJ_P(callable)); - if (fn->common.fn_flags & ZEND_ACC_FAKE_CLOSURE && fn->common.scope) { + if ((fn->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) && fn->common.scope) { return zend_create_member_string(fn->common.scope->name, fn->common.function_name); } return zend_string_copy(fn->common.function_name);