multibuttonentry: Fix item resource clean up logic. 18/141018/1
authorWoochan Lee <wc0917.lee@samsung.com>
Thu, 27 Jul 2017 13:08:22 +0000 (22:08 +0900)
committerWoochan Lee <wc0917.lee@samsung.com>
Thu, 27 Jul 2017 13:08:52 +0000 (22:08 +0900)
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

Change-Id: I523afadb2c767b42ecc253f6b691e4de512c1199

src/lib/elc_multibuttonentry.c

index 50f0f9641f52f6e1180c7984dd3cad618319c06d..401c1a0c62e61f332762e5a394c0b7e5fed9fdd3 100644 (file)
@@ -1757,13 +1757,14 @@ _elm_multibuttonentry_evas_object_smart_add(Eo *obj, Elm_Multibuttonentry_Data *
 EOLIAN static void
 _elm_multibuttonentry_evas_object_smart_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)
      eo_del(eo_item);
 
-   sd->items = NULL;
+   sd->items = eina_list_free(sd->items);
 
    sd->selected_it = NULL;
    sd->focused_it = NULL;