fix item_class refcount bug when class updated
authorSangHyeon Lee <sh10233.lee@samsung.com>
Fri, 1 Apr 2016 07:40:16 +0000 (16:40 +0900)
committerSangHyeon Lee <sh10233.lee@samsung.com>
Fri, 1 Apr 2016 07:40:16 +0000 (16:40 +0900)
src/lib/elementary/elm_genlist.c

index 6a8e8a2..d5f5649 100644 (file)
@@ -7070,7 +7070,15 @@ _elm_genlist_item_item_class_update(Eo *eo_it, Elm_Gen_Item *it,
 {
    ELM_GENLIST_ITEM_CHECK_OR_RETURN(it);
    EINA_SAFETY_ON_NULL_RETURN(itc);
-   it->itc = itc;
+
+   /* Decrease the orignal item class refcount to prevent memory leak */
+   if (it->itc != itc)
+     {
+        elm_genlist_item_class_unref((Elm_Genlist_Item_Class *)it->itc);
+        it->itc = itc;
+        elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)it->itc);
+     }
+
    if (!it->item->block) return;
    it->item->nocache_once = EINA_TRUE;