rimmed pushed a commit to branch eflete-1.18.

http://git.enlightenment.org/tools/eflete.git/commit/?id=904133a828e5a00e0a6850948d1e47259e96c4c1

commit 904133a828e5a00e0a6850948d1e47259e96c4c1
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Mon Sep 12 19:20:45 2016 +0300

    property: remove callbacks before freeing the data
---
 src/bin/ui/property/property.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/bin/ui/property/property.c b/src/bin/ui/property/property.c
index a4c6400..ca38bde 100644
--- a/src/bin/ui/property/property.c
+++ b/src/bin/ui/property/property.c
@@ -178,15 +178,25 @@ _unrealized_cb(void *data,
    elm_object_focus_set(pd->genlist, true);
 }
 
-void
+static void
 _property_del(void *data,
               Evas *e __UNUSED__,
               Evas_Object *obj __UNUSED__,
               void *event_info __UNUSED__)
 {
-   Property_Mode *pd = (Property_Mode *)data;
+   Property_Data *pd = (Property_Data *)data;
 
    property_group_del();
+
+   /* We need to delete all calbacks here because some of them could be 
triggered
+      later (i.e. unrealize_cb) and have incorrect data */
+   evas_object_smart_callback_del(pd->genlist, "expand,request", 
_expand_request_cb);
+   evas_object_smart_callback_del(pd->genlist, "contract,request", 
_contract_request_cb);
+   evas_object_smart_callback_del(pd->genlist, "expanded", _expanded_cb);
+   evas_object_smart_callback_del(pd->genlist, "contracted", _contracted_cb);
+   evas_object_smart_callback_del(pd->genlist, "realized", _realized_cb);
+   evas_object_smart_callback_del(pd->genlist, "unrealized", _unrealized_cb);
+
    free(pd);
 }
 

-- 


Reply via email to