Commit 2e20074310a for php.net
commit 2e20074310af1382f9988681a2261547116e0c26
Merge: e39b6b96975 5485f8ee401
Author: Arnaud Le Blanc <arnaud.lb@gmail.com>
Date: Fri Mar 20 15:45:55 2026 +0100
Merge branch 'PHP-8.5'
* PHP-8.5:
Fix GH-20875: Propagate IN_GET guard in get_property_ptr_ptr for lazy proxies
diff --cc Zend/zend_object_handlers.c
index 45eac02949d,0e8f0f274cd..7e03139dc42
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@@ -1414,9 -1412,19 +1416,19 @@@ try_again
return &EG(error_zval);
}
- return zend_std_get_property_ptr_ptr(zobj, name, type, cache_slot);
+ if (guarded && (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
+ uint32_t *guard = zend_get_property_guard(instance, name);
+ if (!(*guard & IN_GET)) {
+ (*guard) |= IN_GET;
+ retval = zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
+ (*guard) &= ~IN_GET;
+ return retval;
+ }
+ }
+
+ return zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
}
- if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
+ if (UNEXPECTED(type == BP_VAR_RW)) {
if (prop_info) {
zend_typed_property_uninitialized_access(prop_info, name);
retval = &EG(error_zval);