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)); --