diff --git a/src/lib/elementary/efl_access_text.c b/src/lib/elementary/efl_access_text.c index 5f3f339f60..fa3798523a 100644 --- a/src/lib/elementary/efl_access_text.c +++ b/src/lib/elementary/efl_access_text.c @@ -17,4 +17,11 @@ EAPI elm_atspi_text_text_attribute_free(Efl_Access_Text_Attribute *attr) free(attr); } +EAPI void +elm_atspi_text_text_range_free(Efl_Access_Text_Range *range) +{ + free(range->content); + free(range); +} + #include "efl_access_text.eo.c" diff --git a/src/lib/elementary/efl_access_text.eo b/src/lib/elementary/efl_access_text.eo index 45e373bc6c..7b13206937 100644 --- a/src/lib/elementary/efl_access_text.eo +++ b/src/lib/elementary/efl_access_text.eo @@ -27,7 +27,7 @@ struct Efl.Access.Text_Attribute value: string; [[Text attribute value]] } -struct Efl.Access.Text_Range +struct @free(elm_atspi_text_text_range_free) Efl.Access.Text_Range { [[Text range]] start_offset: int; [[Range start offset]] diff --git a/src/lib/elementary/efl_access_text.h b/src/lib/elementary/efl_access_text.h index edbb6e10f9..f5cecc01bd 100644 --- a/src/lib/elementary/efl_access_text.h +++ b/src/lib/elementary/efl_access_text.h @@ -15,5 +15,10 @@ */ EAPI void elm_atspi_text_text_attribute_free(Efl_Access_Text_Attribute *attr); +/** + * @brief Free Efl_Access_Text_Range structure + */ +EAPI void elm_atspi_text_text_range_free(Efl_Access_Text_Range *range); + #endif #endif diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c index cca6176dee..e75f935a71 100644 --- a/src/lib/elementary/elm_atspi_bridge.c +++ b/src/lib/elementary/elm_atspi_bridge.c @@ -1755,8 +1755,7 @@ _text_bounded_ranges_get(const Eldbus_Service_Interface *iface, const Eldbus_Mes { eldbus_message_iter_basic_append(iter_struct, 'i', range->start_offset); eldbus_message_iter_basic_append(iter_struct, 'i', range->end_offset); - range->content = range->content ? range->content : strdup(""); - eldbus_message_iter_basic_append(iter_struct, 's', range->content); + eldbus_message_iter_basic_append(iter_struct, 's', range->content ? range->content : ""); /* AT-SPI specification requires variant type in return, however * ATK or other implementations as well as AT Clients don't use it . * To cover spec a dummy value will be returned */ @@ -1768,8 +1767,7 @@ _text_bounded_ranges_get(const Eldbus_Service_Interface *iface, const Eldbus_Mes } eldbus_message_iter_container_close(iter_array, iter_struct); } - if (range->content) free(range->content); - free(range); + elm_atspi_text_text_range_free(range); } eldbus_message_iter_container_close(iter, iter_array);