@@ -238,6 +238,11 @@ static void reflection_free_objects_storage(zend_object *object) /* {{{ */
238
238
case REF_TYPE_PROPERTY :
239
239
prop_reference = (property_reference * )intern -> ptr ;
240
240
zend_string_release_ex (prop_reference -> unmangled_name , 0 );
241
+
242
+ if (ZEND_TYPE_IS_NAME (prop_reference -> prop .type )) {
243
+ zend_string_release (ZEND_TYPE_NAME (prop_reference -> prop .type ));
244
+ }
245
+
241
246
efree (intern -> ptr );
242
247
break ;
243
248
case REF_TYPE_GENERATOR :
@@ -1233,6 +1238,11 @@ static void reflection_property_factory(zend_class_entry *ce, zend_string *name,
1233
1238
intern = Z_REFLECTION_P (object );
1234
1239
reference = (property_reference * ) emalloc (sizeof (property_reference ));
1235
1240
reference -> prop = * prop ;
1241
+
1242
+ if (ZEND_TYPE_IS_NAME (reference -> prop .type )) {
1243
+ zend_string_addref (ZEND_TYPE_NAME (reference -> prop .type ));
1244
+ }
1245
+
1236
1246
reference -> unmangled_name = zend_string_copy (name );
1237
1247
reference -> dynamic = dynamic ;
1238
1248
intern -> ptr = reference ;
@@ -4258,6 +4268,7 @@ ZEND_METHOD(reflection_class, getProperty)
4258
4268
property_info_tmp .name = name ;
4259
4269
property_info_tmp .doc_comment = NULL ;
4260
4270
property_info_tmp .ce = ce ;
4271
+ property_info_tmp .type = 0 ;
4261
4272
4262
4273
reflection_property_factory (ce , name , & property_info_tmp , return_value , 1 );
4263
4274
return ;
@@ -4339,6 +4350,7 @@ static void _adddynproperty(zval *ptr, zend_string *key, zend_class_entry *ce, z
4339
4350
property_info .name = key ;
4340
4351
property_info .ce = ce ;
4341
4352
property_info .offset = -1 ;
4353
+ property_info .type = 0 ;
4342
4354
reflection_property_factory (ce , key , & property_info , & property , 1 );
4343
4355
add_next_index_zval (retval , & property );
4344
4356
}
@@ -5319,10 +5331,15 @@ ZEND_METHOD(reflection_property, __construct)
5319
5331
reference -> prop .name = name ;
5320
5332
reference -> prop .doc_comment = NULL ;
5321
5333
reference -> prop .ce = ce ;
5334
+ reference -> prop .type = 0 ;
5322
5335
reference -> dynamic = 1 ;
5323
5336
} else {
5324
5337
reference -> prop = * property_info ;
5325
5338
reference -> dynamic = 0 ;
5339
+
5340
+ if (ZEND_TYPE_IS_NAME (reference -> prop .type )) {
5341
+ zend_string_addref (ZEND_TYPE_NAME (reference -> prop .type ));
5342
+ }
5326
5343
}
5327
5344
reference -> unmangled_name = zend_string_copy (name );
5328
5345
intern -> ptr = reference ;
0 commit comments