@@ -317,7 +317,7 @@ static void free_internal_attribute(zval *v)
317
317
pefree (Z_PTR_P (v ), 1 );
318
318
}
319
319
320
- ZEND_API zend_internal_attribute * zend_internal_attribute_register (zend_class_entry * ce )
320
+ ZEND_API zend_internal_attribute * zend_mark_internal_attribute (zend_class_entry * ce )
321
321
{
322
322
zend_internal_attribute * internal_attr ;
323
323
zend_attribute * attr ;
@@ -344,6 +344,14 @@ ZEND_API zend_internal_attribute *zend_internal_attribute_register(zend_class_en
344
344
zend_error_noreturn (E_ERROR , "Classes must be first marked as attribute before being able to be registered as internal attribute class" );
345
345
}
346
346
347
+ ZEND_API zend_internal_attribute * zend_internal_attribute_register (zend_class_entry * ce , uint32_t flags )
348
+ {
349
+ zend_attribute * attr = zend_add_class_attribute (ce , zend_ce_attribute -> name , 1 );
350
+ ZVAL_LONG (& attr -> args [0 ].value , flags );
351
+
352
+ return zend_mark_internal_attribute (ce );
353
+ }
354
+
347
355
ZEND_API zend_internal_attribute * zend_internal_attribute_get (zend_string * lcname )
348
356
{
349
357
return zend_hash_find_ptr (& internal_attributes , lcname );
@@ -356,23 +364,23 @@ void zend_register_attribute_ce(void)
356
364
zend_hash_init (& internal_attributes , 8 , NULL , free_internal_attribute , 1 );
357
365
358
366
zend_ce_attribute = register_class_Attribute ();
359
- attr = zend_internal_attribute_register (zend_ce_attribute );
367
+ attr = zend_mark_internal_attribute (zend_ce_attribute );
360
368
attr -> validator = validate_attribute ;
361
369
362
370
zend_ce_return_type_will_change_attribute = register_class_ReturnTypeWillChange ();
363
- zend_internal_attribute_register (zend_ce_return_type_will_change_attribute );
371
+ zend_mark_internal_attribute (zend_ce_return_type_will_change_attribute );
364
372
365
373
zend_ce_allow_dynamic_properties = register_class_AllowDynamicProperties ();
366
- attr = zend_internal_attribute_register (zend_ce_allow_dynamic_properties );
374
+ attr = zend_mark_internal_attribute (zend_ce_allow_dynamic_properties );
367
375
attr -> validator = validate_allow_dynamic_properties ;
368
376
369
377
zend_ce_sensitive_parameter = register_class_SensitiveParameter ();
370
- zend_internal_attribute_register (zend_ce_sensitive_parameter );
378
+ zend_mark_internal_attribute (zend_ce_sensitive_parameter );
371
379
372
380
memcpy (& attributes_object_handlers_sensitive_parameter_value , & std_object_handlers , sizeof (zend_object_handlers ));
373
381
attributes_object_handlers_sensitive_parameter_value .get_properties_for = attributes_sensitive_parameter_value_get_properties_for ;
374
382
375
- /* This is not an actual attribute, thus the zend_internal_attribute_register () call is missing. */
383
+ /* This is not an actual attribute, thus the zend_mark_internal_attribute () call is missing. */
376
384
zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue ();
377
385
zend_ce_sensitive_parameter_value -> create_object = attributes_sensitive_parameter_value_new ;
378
386
}
0 commit comments