jackdanielz pushed a commit to branch master.

commit dc9c3ee6f9b784400215dfc7410729c5c786e753
Author: Daniel Zaoui <[email protected]>
Date:   Mon Sep 9 10:12:45 2013 +0300

    Genlist: fix memory not freed when item is expanded.
    
    Thanks to TaeHwan Kim for the fix.
---
 src/lib/elm_genlist.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index d672d11..99da991 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -3076,6 +3076,16 @@ _item_del(Elm_Gen_Item *it)
    ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
 
    evas_event_freeze(evas_object_evas_get(obj));
+
+   // FIXME: relative will be better to be fixed. it is too harsh.
+   if (it->item->rel)
+      it->item->rel->item->rel_revs =
+         eina_list_remove(it->item->rel->item->rel_revs, it);
+   if (it->item->rel_revs)
+     {
+        Elm_Gen_Item *tmp;
+        EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL;
+     }
    elm_genlist_item_subitems_clear((Elm_Object_Item *)it);
    if (sd->show_item == it) sd->show_item = NULL;
    if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
@@ -4015,6 +4025,9 @@ _item_move_after(Elm_Gen_Item *it,
 
    sd->items = eina_inlist_append_relative
        (sd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
+   if (it->item->rel)
+      it->item->rel->item->rel_revs =
+         eina_list_remove(it->item->rel->item->rel_revs, it);
    it->item->rel = after;
    after->item->rel_revs = eina_list_append(after->item->rel_revs, it);
    it->item->before = EINA_FALSE;
@@ -4084,6 +4097,9 @@ _item_move_before(Elm_Gen_Item *it,
    if (it->item->block) _item_block_del(it);
    sd->items = eina_inlist_prepend_relative
        (sd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
+   if (it->item->rel)
+      it->item->rel->item->rel_revs =
+         eina_list_remove(it->item->rel->item->rel_revs, it);
    it->item->rel = before;
    before->item->rel_revs = eina_list_append(before->item->rel_revs, it);
    it->item->before = EINA_TRUE;

-- 

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk

Reply via email to