[php-src] master: Zend: derive lazy object initializer callble from FCC
| From: | Gina Peter Banyard | Date: | Sat, 10 Oct 2026 17:27:42 +0000 |
| Subject: | [php-src] master: Zend: derive lazy object initializer callble from FCC | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-142156@lists.php.net to get a copy of this message | ||
Author: Gina Peter Banyard (Girgias)
Date: 2026-10-10T18:27:38+01:00
Commit: https://github.com/php/php-src/commit/612b1f9d223102cd0868f54062ac3c71e0677e1d
Raw diff: https://github.com/php/php-src/commit/612b1f9d223102cd0868f54062ac3c71e0677e1d.diff
Zend: derive lazy object initializer callble from FCC
Changed paths:
M Zend/zend_lazy_objects.c
M Zend/zend_lazy_objects.h
M ext/reflection/php_reflection.c
Diff:
diff --git a/Zend/zend_lazy_objects.c b/Zend/zend_lazy_objects.c
index 5492419d8c67..1d894acee525 100644
--- a/Zend/zend_lazy_objects.c
+++ b/Zend/zend_lazy_objects.c
@@ -116,7 +116,7 @@ static bool zend_lazy_object_has_stale_info(const zend_object *obj)
return zend_hash_index_find_ptr(&EG(lazy_objects_store).infos, obj->handle);
}
-zval* zend_lazy_object_get_initializer_zv(zend_object *obj)
+ZEND_API void zend_lazy_object_get_initializer_callback(zend_object *obj, zval *callback)
{
ZEND_ASSERT(!zend_lazy_object_initialized(obj));
@@ -124,7 +124,7 @@ zval* zend_lazy_object_get_initializer_zv(zend_object *obj)
ZEND_ASSERT(!(info->flags & ZEND_LAZY_OBJECT_INITIALIZED));
- return &info->u.initializer.zv;
+ zend_get_callable_zval_from_fcc(&info->u.initializer.fcc, callback);
}
static zend_fcall_info_cache* zend_lazy_object_get_initializer_fcc(const zend_object *obj)
diff --git a/Zend/zend_lazy_objects.h b/Zend/zend_lazy_objects.h
index f517d9b31a51..f78f7ddb42a4 100644
--- a/Zend/zend_lazy_objects.h
+++ b/Zend/zend_lazy_objects.h
@@ -65,7 +65,7 @@ ZEND_API zend_object *zend_lazy_object_mark_as_initialized(zend_object *obj);
void zend_lazy_objects_init(zend_lazy_objects_store *store);
void zend_lazy_objects_destroy(zend_lazy_objects_store *store);
-zval* zend_lazy_object_get_initializer_zv(zend_object *obj);
+ZEND_API void zend_lazy_object_get_initializer_callback(zend_object *obj, zval *callback);
zend_object *zend_lazy_object_get_instance(zend_object *obj);
zend_lazy_object_flags_t zend_lazy_object_get_flags(const zend_object *obj);
void zend_lazy_object_del_info(const zend_object *obj);
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 984ecfb56040..90bee707e5d1 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -5277,7 +5277,7 @@ ZEND_METHOD(ReflectionClass, getLazyInitializer)
RETURN_NULL();
}
- RETURN_ZVAL(zend_lazy_object_get_initializer_zv(object), true, false);
+ zend_lazy_object_get_initializer_callback(object, return_value);
}
/* }}} */