diff options
author | SangHyeon Lee <sh10233.lee@samsung.com> | 2015-10-30 12:43:35 +0900 |
---|---|---|
committer | SangHyeon Lee <sh10233.lee@samsung.com> | 2015-10-30 12:43:35 +0900 |
commit | 761e030199f1f5a270e810f84c5275839c9ade7a (patch) | |
tree | 817efe74ed7c640cb4ed4f2140f2566a3143e3d9 | |
parent | 08db45071729371ce299147c36f30dccfaf8bc49 (diff) | |
download | elementary-761e030199f1f5a270e810f84c5275839c9ade7a.tar.gz |
genlist : fix momory leak in content reuse
-rw-r--r-- | src/lib/elm_genlist.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 5eefb7b26..b45958625 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -1496,14 +1496,21 @@ _item_cache_pop(Elm_Genlist_Data *sd, Item_Cache *itc) static void _item_cache_free(Item_Cache *itc) { - if (!itc) return; Evas_Object *c; + const char *part; + + if (!itc) return; evas_object_del(itc->spacer); evas_object_del(itc->base_view); eina_stringshare_del(itc->item_style); EINA_LIST_FREE(itc->contents, c) - evas_object_del(c); + { + part = (const char *)evas_object_data_get(c, "part"); + eina_stringshare_del(part); + evas_object_data_del(c, "part"); + evas_object_del(c); + } ELM_SAFE_FREE(itc, free); } @@ -5092,8 +5099,13 @@ _item_unrealize(Elm_Gen_Item *it) { ELM_SAFE_FREE(VIEW(it), evas_object_del); ELM_SAFE_FREE(it->spacer, evas_object_del); - EINA_LIST_FREE(reused_parts, part) - eina_stringshare_del(part); + EINA_LIST_FREE(reused_parts, c) + { + part = (const char *)evas_object_data_get(c, "part"); + eina_stringshare_del(part); + evas_object_data_del(c, "part"); + evas_object_del(c); + } } it->states = NULL; |