tasn pushed a commit to branch master.

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

commit 5ad71f14868837018d68525db1fe93efeb3d532f
Author: Tom Hacohen <t...@stosb.com>
Date:   Fri Sep 9 10:53:45 2016 +0100

    Eo: don't allow object override to introduce previously undefined functions.
---
 src/lib/eo/eo.c                      | 6 ++++++
 src/tests/eo/suite/eo_test_general.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 12d4290..08d2bb6 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -648,6 +648,12 @@ _eo_class_funcs_set(Eo_Vtable *vtable, const 
Efl_Object_Ops *ops, const _Efl_Cla
 
              if (op == EFL_NOOP)
                {
+                  if (override_only)
+                    {
+                       ERR("Class '%s': Tried overriding a previously 
undefined function.", klass->desc->name);
+                       return EINA_FALSE;
+                    }
+
                   op = op_id;
                   eina_spinlock_take(&_ops_storage_lock);
 #ifndef _WIN32
diff --git a/src/tests/eo/suite/eo_test_general.c 
b/src/tests/eo/suite/eo_test_general.c
index 0c522d1..1676faf 100644
--- a/src/tests/eo/suite/eo_test_general.c
+++ b/src/tests/eo/suite/eo_test_general.c
@@ -104,7 +104,7 @@ START_TEST(efl_object_override_tests)
             overrides3,
             EFL_OBJECT_OP_FUNC(simple2_class_beef_get, 
_simple_obj_override_a_double_set));
    fail_if(!efl_object_override(obj, NULL));
-   fail_if(!efl_object_override(obj, &overrides3));
+   fail_if(efl_object_override(obj, &overrides3));
 
    /* Test override reset */
    fail_if(!efl_object_override(obj, NULL));

-- 


Reply via email to