netstar pushed a commit to branch master.

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

commit e708c0ae33908db19274902efc977c5e702a311e
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Aug 15 09:45:06 2018 +0100

    elm/list: use while() loop to iterate item list during smart delete
    
    Summary:
    using EINA_LIST_FREE here double deletes 2 list items on every iteration
    due to recursive list removals, which prevents some items from being
    deleted as expected
    
    fix T7266
    
    Reviewers: netstar
    
    Reviewed By: netstar
    
    Subscribers: netstar, cedric, #reviewers, #committers
    
    Tags: #efl_widgets
    
    Maniphest Tasks: T7266
    
    Differential Revision: https://phab.enlightenment.org/D6829
---
 src/lib/elementary/elm_list.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index fd47d66bcf..a34425b02b 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -2431,8 +2431,9 @@ _elm_list_efl_canvas_group_group_del(Eo *obj, 
Elm_List_Data *sd)
    evas_object_event_callback_del
      (sd->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb);
 
-   EINA_LIST_FREE(sd->items, eo_it)
-     efl_del(eo_it);
+   while (sd->items)
+     /* will be removed from list in _elm_list_item_elm_widget_item_del_pre */
+     efl_del(eina_list_data_get(sd->items));
 
    sd->selected = eina_list_free(sd->selected);
 

-- 


Reply via email to