@@ -277,10 +277,16 @@ static ZEND_COLD zend_never_inline void zend_forbidden_dynamic_property(
277
277
ZSTR_VAL (ce -> name ), ZSTR_VAL (member ));
278
278
}
279
279
280
- static ZEND_COLD zend_never_inline void zend_deprecated_dynamic_property (
281
- zend_class_entry * ce , zend_string * member ) {
280
+ static ZEND_COLD zend_never_inline bool zend_deprecated_dynamic_property (
281
+ zend_object * obj , zend_string * member ) {
282
+ GC_ADDREF (obj );
282
283
zend_error (E_DEPRECATED , "Creation of dynamic property %s::$%s is deprecated" ,
283
- ZSTR_VAL (ce -> name ), ZSTR_VAL (member ));
284
+ ZSTR_VAL (obj -> ce -> name ), ZSTR_VAL (member ));
285
+ if (UNEXPECTED (GC_DELREF (obj ) == 0 )) {
286
+ zend_objects_store_del (obj );
287
+ return 0 ;
288
+ }
289
+ return 1 ;
284
290
}
285
291
286
292
static ZEND_COLD zend_never_inline void zend_readonly_property_modification_scope_error (
@@ -880,7 +886,10 @@ ZEND_API zval *zend_std_write_property(zend_object *zobj, zend_string *name, zva
880
886
goto exit ;
881
887
}
882
888
if (UNEXPECTED (!(zobj -> ce -> ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES ))) {
883
- zend_deprecated_dynamic_property (zobj -> ce , name );
889
+ if (UNEXPECTED (!zend_deprecated_dynamic_property (zobj , name ))) {
890
+ variable_ptr = & EG (error_zval );
891
+ goto exit ;
892
+ }
884
893
}
885
894
886
895
Z_TRY_ADDREF_P (value );
@@ -1063,7 +1072,9 @@ ZEND_API zval *zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *nam
1063
1072
return & EG (error_zval );
1064
1073
}
1065
1074
if (UNEXPECTED (!(zobj -> ce -> ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES ))) {
1066
- zend_deprecated_dynamic_property (zobj -> ce , name );
1075
+ if (UNEXPECTED (!zend_deprecated_dynamic_property (zobj , name ))) {
1076
+ return & EG (error_zval );
1077
+ }
1067
1078
}
1068
1079
if (UNEXPECTED (!zobj -> properties )) {
1069
1080
rebuild_object_properties (zobj );
0 commit comments