-
Jonathan Schöbel authored
Deregistering a global attribute normally is not possible, as basically every other tag has to be added. This was implemented now. Originally it was intended to provide the caller with the information, that a global attribute has to be converted into a local one before removal. However such internals should not be exposed to the caller. As it stands there is no real reason to inform a caller, whether an attribute is local or global. Also, there is a problem that the predicate is burdened with the possibility, that the attribute doesn't exists, thus it can't return a boolean directly. Both is why, the predicate isn't added yet. Also a bug was detected in the method remove_tag_for_all_attrs. It removes an attribute while also iterating over it, thus potentially skipping over some attribute and maybe also invoking undefined behaviour by deallocating space after the array.
Jonathan Schöbel authoredDeregistering a global attribute normally is not possible, as basically every other tag has to be added. This was implemented now. Originally it was intended to provide the caller with the information, that a global attribute has to be converted into a local one before removal. However such internals should not be exposed to the caller. As it stands there is no real reason to inform a caller, whether an attribute is local or global. Also, there is a problem that the predicate is burdened with the possibility, that the attribute doesn't exists, thus it can't return a boolean directly. Both is why, the predicate isn't added yet. Also a bug was detected in the method remove_tag_for_all_attrs. It removes an attribute while also iterating over it, thus potentially skipping over some attribute and maybe also invoking undefined behaviour by deallocating space after the array.