From e708c0ae33908db19274902efc977c5e702a311e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 15 Aug 2018 09:45:06 +0100 Subject: [PATCH] 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);