Issue of the Implementation # S0568


atk_object_remove_relationship can remove more relationships than it should

Detailed Description

There can be errors if the relationships between objects are processed with both atk_object_add_relationship/atk_object_remove_relationship, atk_object_ref_relation_set and then some function from AtkRelationSet.


relation_set = atk_object_ref_relation_set(obj);
atk_object_add_relationship(obj, type, target1);
atk_relation_set_add_relation_by_type(relation_set, type, target2);
atk_object_remove_relationship(obj, type, target1);
The <type,target1> relationship will be removed in this case but <type,target2> will be removed too, while it should not.

Problem location(s) in the standard

ATK 1.9.0 Reference Manual, AtkObject

Possible solutions

If the AtkRelation instance containing the relationship to be removed has also some other relationships, one can adjust the "target" list in this instance rather than delete the instance.


gtk-atk 1.9.0 or later


Gnome Bugzilla 477708


Fixed in ATK 1.25.2 for GNOME 2.25.2