@@ -317,7 +317,7 @@ static void free_internal_attribute(zval *v)
317317 pefree (Z_PTR_P (v ), 1 );
318318}
319319
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 )
321321{
322322 zend_internal_attribute * internal_attr ;
323323 zend_attribute * attr ;
@@ -344,6 +344,14 @@ ZEND_API zend_internal_attribute *zend_internal_attribute_register(zend_class_en
344344 zend_error_noreturn (E_ERROR , "Classes must be first marked as attribute before being able to be registered as internal attribute class" );
345345}
346346
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+
347355ZEND_API zend_internal_attribute * zend_internal_attribute_get (zend_string * lcname )
348356{
349357 return zend_hash_find_ptr (& internal_attributes , lcname );
@@ -356,23 +364,23 @@ void zend_register_attribute_ce(void)
356364 zend_hash_init (& internal_attributes , 8 , NULL , free_internal_attribute , 1 );
357365
358366 zend_ce_attribute = register_class_Attribute ();
359- attr = zend_internal_attribute_register (zend_ce_attribute );
367+ attr = zend_mark_internal_attribute (zend_ce_attribute );
360368 attr -> validator = validate_attribute ;
361369
362370 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 );
364372
365373 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 );
367375 attr -> validator = validate_allow_dynamic_properties ;
368376
369377 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 );
371379
372380 memcpy (& attributes_object_handlers_sensitive_parameter_value , & std_object_handlers , sizeof (zend_object_handlers ));
373381 attributes_object_handlers_sensitive_parameter_value .get_properties_for = attributes_sensitive_parameter_value_get_properties_for ;
374382
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. */
376384 zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue ();
377385 zend_ce_sensitive_parameter_value -> create_object = attributes_sensitive_parameter_value_new ;
378386}
0 commit comments