summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSangHyeon Lee <sh10233.lee@samsung.com>2015-10-30 12:43:35 +0900
committerSangHyeon Lee <sh10233.lee@samsung.com>2015-10-30 12:43:35 +0900
commit761e030199f1f5a270e810f84c5275839c9ade7a (patch)
tree817efe74ed7c640cb4ed4f2140f2566a3143e3d9
parent08db45071729371ce299147c36f30dccfaf8bc49 (diff)
downloadelementary-761e030199f1f5a270e810f84c5275839c9ade7a.tar.gz
genlist : fix momory leak in content reuse
-rw-r--r--src/lib/elm_genlist.c20
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;