Подробности
[В начало]
Проблема в реализации № S0568
Краткое описание
Функция atk_object_remove_relationship может удалить больше связей, чем должна
Подробное описание
При одновременной работе со связями между обьектами через
atk_object_add_relationship/atk_object_remove_relationship и atk_object_ref_relation_set (и последующими вызовами функций из 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);Удалится не только relationship <type,target1> но и <type,target2>, чего быть не должно.
Раздел стандарта
ATK 1.9.0 Reference Manual, AtkObject
Способы устранения
Если объект AtkRelation, содержащий удаляемую связь, содержит не только эту связь, но и другие связи, то не удалять весь обьект, а корректировать список "target" в этом объекте.
Компонент
gtk-atk 1.9.0 or later
Принято
Gnome Bugzilla 477708
Статус
Исправлено в ATK 1.25.2 for GNOME 2.25.2.
[В начало]