tasn pushed a commit to branch efl-1.13.

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

commit 885058bca0bc3d5bfa0456903c8f9767d9fef7a6
Author: Tom Hacohen <t...@stosb.com>
Date:   Mon Apr 13 13:50:43 2015 +0100

    Evas object: verify the parent is valid and fail if not.
    
    It seems like before the switch to Eo, all the object_*_add functions
    had magic checks that only allowed non NULL Evas pointers to be passed.
    Since we switched to Eo we apparently missed the early failure we used
    to have, and we instead fail later. This patch should fix that.
    
    Thanks to jaehwan for reporting.
    
    @fix
---
 src/lib/evas/canvas/evas_object_main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index da97914..1b3fe4b 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -85,11 +85,15 @@ _init_cow(void)
 EOLIAN static void
 _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
 {
+   Eo *parent = NULL;
+
    eo_do_super(eo_obj, MY_CLASS, eo_constructor());
    eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME));
    eo_manual_free_set(eo_obj, EINA_TRUE);
 
-   if (!obj || !_init_cow())
+   eo_do(eo_obj, parent = eo_parent_get());
+
+   if (!obj || !_init_cow() || !eo_isa(parent, 
EVAS_COMMON_INTERFACE_INTERFACE))
      {
         eo_error_set(eo_obj);
         return;

-- 


Reply via email to