raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a6253f44a9bc43db621908a78ec3ecbee939fdd2

commit a6253f44a9bc43db621908a78ec3ecbee939fdd2
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Fri Apr 21 15:58:04 2017 +0900

    elm widget - fix weak reference messup that causes segv's
    
    welm widget weak refered the logical parent slot but never unreffed
    the weak ref - ever. this should fix that. in fact it does. one crash
    less with:
    
    elementary_test -to "icon standard"
    
    @fix
---
 src/lib/elementary/elm_widget.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index f7af9e6..0afdad7 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -352,6 +352,8 @@ _logical_parent_eval(Eo *obj EINA_UNUSED, 
Elm_Widget_Smart_Data *pd)
                }
              logical_wd->logical.child_count --;
              old = pd->logical.parent;
+             if (pd->logical.parent)
+               efl_weak_unref(&pd->logical.parent);
              pd->logical.parent = NULL;
           }
         if (parent)
@@ -6203,6 +6205,11 @@ _elm_widget_efl_object_destructor(Eo *obj, 
Elm_Widget_Smart_Data *sd EINA_UNUSED
    sd->manager.provider = NULL;
 
    elm_interface_atspi_accessible_removed(obj);
+   if (sd->logical.parent)
+     {
+        efl_weak_unref(&sd->logical.parent);
+        sd->logical.parent = NULL;
+     }
 }
 
 EOLIAN static Eina_Bool

-- 


Reply via email to