raster pushed a commit to branch efl-1.22.

http://git.enlightenment.org/core/efl.git/commit/?id=06c070102e8798670b9ba1389a0b2599e3c850f7

commit 06c070102e8798670b9ba1389a0b2599e3c850f7
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Aug 18 00:25:39 2019 +0100

    elm hoversel - avoid crash when items modified while popping down
    
    this fixes a crash i saw with asan on pop down if items change at that
    time. @fix
---
 src/lib/elementary/elc_hoversel.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elc_hoversel.c 
b/src/lib/elementary/elc_hoversel.c
index bf5cb4ab8e..e796296094 100644
--- a/src/lib/elementary/elc_hoversel.c
+++ b/src/lib/elementary/elc_hoversel.c
@@ -605,6 +605,7 @@ _elm_hoversel_item_efl_object_destructor(Eo *eo_item, 
Elm_Hoversel_Item_Data *it
 {
    ELM_HOVERSEL_DATA_GET_OR_RETURN(WIDGET(item), sd);
 
+   evas_object_event_callback_del_full(sd->hover, EVAS_CALLBACK_DEL, 
_auto_update, eo_item);
    elm_hoversel_hover_end(WIDGET(item));
    sd->items = eina_list_remove(sd->items, eo_item);
    eina_stringshare_del(item->label);
@@ -660,6 +661,7 @@ _elm_hoversel_efl_canvas_group_group_del(Eo *obj, 
Elm_Hoversel_Data *sd)
 {
    Elm_Object_Item *eo_item;
 
+   evas_object_event_callback_del(sd->hover, EVAS_CALLBACK_DEL, _auto_update);
    EINA_LIST_FREE(sd->items, eo_item)
      {
         ELM_HOVERSEL_ITEM_DATA_GET(eo_item, it);
@@ -807,9 +809,9 @@ EOLIAN static void
 _elm_hoversel_clear(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *sd)
 {
    Elm_Object_Item *it;
-   Eina_List *l, *ll;
 
-   EINA_LIST_FOREACH_SAFE(sd->items, l, ll, it)
+   evas_object_event_callback_del(sd->hover, EVAS_CALLBACK_DEL, _auto_update);
+   EINA_LIST_FREE(sd->items, it)
      {
         efl_del(it);
      }

-- 


Reply via email to