@@ -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,15 @@ 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
+ }
355
+
347
356
ZEND_API zend_internal_attribute * zend_internal_attribute_get (zend_string * lcname )
348
357
{
349
358
return zend_hash_find_ptr (& internal_attributes , lcname );
@@ -356,23 +365,23 @@ void zend_register_attribute_ce(void)
356
365
zend_hash_init (& internal_attributes , 8 , NULL , free_internal_attribute , 1 );
357
366
358
367
zend_ce_attribute = register_class_Attribute ();
359
- attr = zend_internal_attribute_register (zend_ce_attribute );
368
+ attr = zend_mark_internal_attribute (zend_ce_attribute );
360
369
attr -> validator = validate_attribute ;
361
370
362
371
zend_ce_return_type_will_change_attribute = register_class_ReturnTypeWillChange ();
363
- zend_internal_attribute_register (zend_ce_return_type_will_change_attribute );
372
+ zend_mark_internal_attribute (zend_ce_return_type_will_change_attribute );
364
373
365
374
zend_ce_allow_dynamic_properties = register_class_AllowDynamicProperties ();
366
- attr = zend_internal_attribute_register (zend_ce_allow_dynamic_properties );
375
+ attr = zend_mark_internal_attribute (zend_ce_allow_dynamic_properties );
367
376
attr -> validator = validate_allow_dynamic_properties ;
368
377
369
378
zend_ce_sensitive_parameter = register_class_SensitiveParameter ();
370
- zend_internal_attribute_register (zend_ce_sensitive_parameter );
379
+ zend_mark_internal_attribute (zend_ce_sensitive_parameter );
371
380
372
381
memcpy (& attributes_object_handlers_sensitive_parameter_value , & std_object_handlers , sizeof (zend_object_handlers ));
373
382
attributes_object_handlers_sensitive_parameter_value .get_properties_for = attributes_sensitive_parameter_value_get_properties_for ;
374
383
375
- /* This is not an actual attribute, thus the zend_internal_attribute_register () call is missing. */
384
+ /* This is not an actual attribute, thus the zend_mark_internal_attribute () call is missing. */
376
385
zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue ();
377
386
zend_ce_sensitive_parameter_value -> create_object = attributes_sensitive_parameter_value_new ;
378
387
}
0 commit comments