Подробности

[В начало]

Проблема в реализации № 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.

[В начало]