jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6d31f5c7fd02779e3481dba715c78ef265efd6ba
commit 6d31f5c7fd02779e3481dba715c78ef265efd6ba Author: Woochan Lee <wc0917....@samsung.com> Date: Wed Jul 19 10:35:49 2017 +0900 multibuttonentry: Fix item resource clean up logic. Summary: There are four cases where items are deleted. 1. Select item and push back button. 2. Delete "X" part of item. 3. Calling elm_object_item_del(). 4. MBE deleted. Previous logic is can't support for all cases. below problems were there. eina_list_remove() called twice. list data free twice. @fix Test Plan: elementary_test -> multibuttonentry test. Reviewers: jpeg, cedric Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5030 --- src/lib/elementary/elc_multibuttonentry.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index 9b8fb8ddfa..4458a830b1 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -393,6 +393,7 @@ _item_del(Elm_Multibuttonentry_Item_Data *item) ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); + sd->items = eina_list_remove(sd->items, EO_OBJ(item)); elm_box_unpack(sd->box, VIEW(item)); efl_event_callback_legacy_call @@ -551,7 +552,6 @@ _on_item_deleted(void *data, if (VIEW(temp_it) == obj) { elm_wdg_item_del(eo_temp_it); - sd->items = eina_list_remove(sd->items, eo_temp_it); break; } } @@ -1142,7 +1142,6 @@ _layout_key_down_cb(void *data, Elm_Multibuttonentry_Item_Data *item = sd->selected_it; if (item && sd->editable) { - sd->items = eina_list_remove(sd->items, EO_OBJ(item)); elm_wdg_item_del(EO_OBJ(item)); elm_object_focus_set(sd->entry, EINA_TRUE); } @@ -1630,13 +1629,14 @@ _elm_multibuttonentry_efl_canvas_group_group_add(Eo *obj, Elm_Multibuttonentry_D EOLIAN static void _elm_multibuttonentry_efl_canvas_group_group_del(Eo *obj, Elm_Multibuttonentry_Data *sd) { + Eina_List *l; Elm_Object_Item *eo_item; Elm_Multibuttonentry_Item_Filter *_item_filter = NULL; - EINA_LIST_FREE(sd->items, eo_item) + EINA_LIST_FOREACH(sd->items, l, eo_item) efl_del(eo_item); - sd->items = NULL; + sd->items = eina_list_free(sd->items); sd->selected_it = NULL; --