Подробности

[В начало]

Проблема в реализации № S0574

Краткое описание

atk_state_set_or_sets возвращает пустое множество, а не NULL

Подробное описание

Будучи вызванной на пустых множествах, atk_state_set_or_sets возвращает пустое множество.

Согласно же документации, она должна вернуть NULL.

В отличие от этой функции, atk_state_set_and_sets и atk_state_set_xor_sets в случае, когда результат пустое множество, возвращают NULL.

Раздел стандарта

ATK 1.9.0 Reference Manual, AtkStateSet

Способы устранения

Для устранения проблемы необходимо реализовать функцию atk_state_set_or_sets по аналогии с atk_state_set_and_sets и atk_state_set_xor_sets:

--- atk-1.19.6/atk/atkstateset.c
+++ atk-1.19.6/atk/atkstateset.c
@@ -308,8 +308,11 @@
 
   state = real_set->state | real_compare_set->state;
 
-  return_set = atk_state_set_new();
-  ((AtkRealStateSet *) return_set)->state = state;
+  if (state)
+  {
+    return_set = atk_state_set_new();
+    ((AtkRealStateSet *) return_set)->state = state;
+  }
 
   return return_set;
 }

Компонент

gtk-atk 1.9.0 or later

Принято

Gnome Bugzilla 478595

Статус

Исправлено в ATK 1.25.2 for GNOME 2.25.2.

[В начало]