From 92fb2917cba7b91a83fbfd39b876d585921d6d3e Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 20 May 2015 14:56:45 +0100 Subject: [PATCH] Eo: Remove eo_error_set() and clean up finalizer() This is another cleanup in perparation for the Eo stable release. This is no longer needed thanks to the proper error reporting with eo_constructor()'s new return value. The finalizer change cleans it up a bit so it catches more cases/issues. This also means that the finalizer cleans up the object in all cases, and not only some. @feature. --- src/lib/ecore/ecore_anim.c | 13 +++++- src/lib/ecore/ecore_animator.eo | 1 + src/lib/ecore/ecore_idle_enterer.c | 13 +++++- src/lib/ecore/ecore_idle_enterer.eo | 1 + src/lib/ecore/ecore_idle_exiter.c | 12 +++++- src/lib/ecore/ecore_idle_exiter.eo | 1 + src/lib/ecore/ecore_idler.c | 13 +++++- src/lib/ecore/ecore_idler.eo | 1 + src/lib/ecore/ecore_job.c | 14 +++++-- src/lib/ecore/ecore_job.eo | 1 + src/lib/ecore/ecore_poller.c | 13 +++++- src/lib/ecore/ecore_poller.eo | 1 + src/lib/ecore/ecore_timer.c | 13 +++++- src/lib/ecore/ecore_timer.eo | 1 + src/lib/ecore_con/ecore_con_url.c | 7 ++-- src/lib/eo/Eo.h | 13 ------ src/lib/eo/eo.c | 42 ++++++++++--------- src/lib/eo/eo_base_class.c | 2 +- src/lib/eo/eo_private.h | 2 - src/lib/evas/canvas/evas_object_image.c | 6 +-- src/lib/evas/canvas/evas_object_main.c | 2 +- src/lib/evas/canvas/evas_vg_node.c | 15 +++---- src/lib/evas/canvas/evas_vg_root_node.c | 8 ++-- .../eo/constructors/constructors_simple.c | 7 +++- .../eo/constructors/constructors_simple2.c | 3 +- .../eo/constructors/constructors_simple6.c | 2 - src/tests/eo/suite/eo_test_general.c | 2 - 27 files changed, 133 insertions(+), 76 deletions(-) diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c index 14c4531aa9..b02d90582d 100644 --- a/src/lib/ecore/ecore_anim.c +++ b/src/lib/ecore/ecore_anim.c @@ -177,7 +177,6 @@ _ecore_animator_add(Ecore_Animator *obj, { if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN_VAL(EINA_FALSE); } @@ -186,7 +185,6 @@ _ecore_animator_add(Ecore_Animator *obj, if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return EINA_FALSE; } @@ -526,6 +524,17 @@ _ecore_animator_eo_base_destructor(Eo *obj, Ecore_Animator_Data *pd) eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_animator_eo_base_finalize(Eo *obj, Ecore_Animator_Data *pd) +{ + if (!pd->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + EAPI void ecore_animator_frametime_set(double frametime) { diff --git a/src/lib/ecore/ecore_animator.eo b/src/lib/ecore/ecore_animator.eo index 58f565c301..ff1e21db32 100644 --- a/src/lib/ecore/ecore_animator.eo +++ b/src/lib/ecore/ecore_animator.eo @@ -22,6 +22,7 @@ class Ecore.Animator (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; Eo.Base.event_freeze; Eo.Base.event_thaw; } diff --git a/src/lib/ecore/ecore_idle_enterer.c b/src/lib/ecore/ecore_idle_enterer.c index 45fd601658..c4091eeea8 100644 --- a/src/lib/ecore/ecore_idle_enterer.c +++ b/src/lib/ecore/ecore_idle_enterer.c @@ -39,7 +39,6 @@ _ecore_idle_enterer_add(Ecore_Idle_Enterer *obj, { if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN_VAL(EINA_FALSE); } @@ -48,7 +47,6 @@ _ecore_idle_enterer_add(Ecore_Idle_Enterer *obj, if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return EINA_FALSE; } @@ -135,6 +133,17 @@ _ecore_idle_enterer_eo_base_destructor(Eo *obj, Ecore_Idle_Enterer_Data *idle_en eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_idle_enterer_eo_base_finalize(Eo *obj, Ecore_Idle_Enterer_Data *idle_enterer) +{ + if (!idle_enterer->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + void _ecore_idle_enterer_shutdown(void) { diff --git a/src/lib/ecore/ecore_idle_enterer.eo b/src/lib/ecore/ecore_idle_enterer.eo index f7273f4950..f3cb6899ea 100644 --- a/src/lib/ecore/ecore_idle_enterer.eo +++ b/src/lib/ecore/ecore_idle_enterer.eo @@ -21,6 +21,7 @@ class Ecore.Idle.Enterer (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; } constructors { .before_constructor; diff --git a/src/lib/ecore/ecore_idle_exiter.c b/src/lib/ecore/ecore_idle_exiter.c index 9f7bff34ac..f8aed55f7b 100644 --- a/src/lib/ecore/ecore_idle_exiter.c +++ b/src/lib/ecore/ecore_idle_exiter.c @@ -47,7 +47,6 @@ _ecore_idle_exiter_constructor(Eo *obj, Ecore_Idle_Exiter_Data *ie, Ecore_Task_C _ecore_lock(); if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN; } @@ -57,7 +56,6 @@ _ecore_idle_exiter_constructor(Eo *obj, Ecore_Idle_Exiter_Data *ie, Ecore_Task_C if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return; } @@ -93,6 +91,16 @@ _ecore_idle_exiter_del(Ecore_Idle_Exiter *obj) return idle_exiter->data; } +EOLIAN static Eo * +_ecore_idle_exiter_eo_base_finalize(Eo *obj, Ecore_Idle_Exiter_Data *idle_exiter) +{ + if (!idle_exiter) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} EOLIAN static void _ecore_idle_exiter_eo_base_destructor(Eo *obj, Ecore_Idle_Exiter_Data *idle_exiter) diff --git a/src/lib/ecore/ecore_idle_exiter.eo b/src/lib/ecore/ecore_idle_exiter.eo index 1178fd7f2d..6e52f627b3 100644 --- a/src/lib/ecore/ecore_idle_exiter.eo +++ b/src/lib/ecore/ecore_idle_exiter.eo @@ -13,6 +13,7 @@ class Ecore.Idle.Exiter (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; } constructors { .constructor; diff --git a/src/lib/ecore/ecore_idler.c b/src/lib/ecore/ecore_idler.c index a61c45c4d5..7c4a73cfbe 100644 --- a/src/lib/ecore/ecore_idler.c +++ b/src/lib/ecore/ecore_idler.c @@ -50,7 +50,6 @@ _ecore_idler_constructor(Eo *obj, Ecore_Idler_Data *ie, Ecore_Task_Cb func, cons { if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN; } @@ -59,7 +58,6 @@ _ecore_idler_constructor(Eo *obj, Ecore_Idler_Data *ie, Ecore_Task_Cb func, cons if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return; } @@ -103,6 +101,17 @@ _ecore_idler_eo_base_destructor(Eo *obj, Ecore_Idler_Data *idler) eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_idler_eo_base_finalize(Eo *obj, Ecore_Idler_Data *idler) +{ + if (!idler->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + void _ecore_idler_shutdown(void) { diff --git a/src/lib/ecore/ecore_idler.eo b/src/lib/ecore/ecore_idler.eo index fd372a4b77..ed6debbe74 100644 --- a/src/lib/ecore/ecore_idler.eo +++ b/src/lib/ecore/ecore_idler.eo @@ -13,6 +13,7 @@ class Ecore.Idler (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; } constructors { .constructor; diff --git a/src/lib/ecore/ecore_job.c b/src/lib/ecore/ecore_job.c index b148f5682e..ed988ab66c 100644 --- a/src/lib/ecore/ecore_job.c +++ b/src/lib/ecore/ecore_job.c @@ -58,14 +58,12 @@ _ecore_job_constructor(Eo *obj, Ecore_Job_Data *job, Ecore_Cb func, const void * { if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN; } eo_manual_free_set(obj, EINA_TRUE); if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return; } @@ -73,7 +71,6 @@ _ecore_job_constructor(Eo *obj, Ecore_Job_Data *job, Ecore_Cb func, const void * job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, obj); if (!job->event) { - eo_error_set(obj); ERR("no event was assigned to object '%p' of class '%s'", obj, MY_CLASS_NAME); return; } @@ -102,6 +99,17 @@ _ecore_job_eo_base_destructor(Eo *obj, Ecore_Job_Data *_pd EINA_UNUSED) eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_job_eo_base_finalize(Eo *obj, Ecore_Job_Data *pd) +{ + if (!pd->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + static Eina_Bool _ecore_job_event_handler(void *data EINA_UNUSED, int type EINA_UNUSED, diff --git a/src/lib/ecore/ecore_job.eo b/src/lib/ecore/ecore_job.eo index c9d32b1f4c..3f7082e235 100644 --- a/src/lib/ecore/ecore_job.eo +++ b/src/lib/ecore/ecore_job.eo @@ -13,6 +13,7 @@ class Ecore.Job (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; } constructors { .constructor; diff --git a/src/lib/ecore/ecore_poller.c b/src/lib/ecore/ecore_poller.c index 61fb7684e3..348a734dd7 100644 --- a/src/lib/ecore/ecore_poller.c +++ b/src/lib/ecore/ecore_poller.c @@ -251,7 +251,6 @@ _ecore_poller_constructor(Eo *obj, Ecore_Poller_Data *poller, Ecore_Poller_Type if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN; } @@ -259,7 +258,6 @@ _ecore_poller_constructor(Eo *obj, Ecore_Poller_Data *poller, Ecore_Poller_Type if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return; } @@ -376,6 +374,17 @@ _ecore_poller_eo_base_destructor(Eo *obj, Ecore_Poller_Data *pd) eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_poller_eo_base_finalize(Eo *obj, Ecore_Poller_Data *pd) +{ + if (!pd->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + void _ecore_poller_shutdown(void) { diff --git a/src/lib/ecore/ecore_poller.eo b/src/lib/ecore/ecore_poller.eo index a8517ad869..b427d47028 100644 --- a/src/lib/ecore/ecore_poller.eo +++ b/src/lib/ecore/ecore_poller.eo @@ -37,6 +37,7 @@ class Ecore.Poller (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; } constructors { .constructor; diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index e119e9612c..9b828564ee 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -112,7 +112,6 @@ _ecore_timer_add(Ecore_Timer *obj, if (EINA_UNLIKELY(!eina_main_loop_is())) { - eo_error_set(obj); EINA_MAIN_LOOP_CHECK_RETURN_VAL(EINA_FALSE); } @@ -121,7 +120,6 @@ _ecore_timer_add(Ecore_Timer *obj, if (!func) { - eo_error_set(obj); ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); return EINA_FALSE; } @@ -465,6 +463,17 @@ _ecore_timer_eo_base_destructor(Eo *obj, Ecore_Timer_Data *pd) eo_do_super(obj, MY_CLASS, eo_destructor()); } +EOLIAN static Eo * +_ecore_timer_eo_base_finalize(Eo *obj, Ecore_Timer_Data *pd) +{ + if (!pd->func) + { + return NULL; + } + + return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); +} + void _ecore_timer_shutdown(void) { diff --git a/src/lib/ecore/ecore_timer.eo b/src/lib/ecore/ecore_timer.eo index 35a5b5d852..ff39697637 100644 --- a/src/lib/ecore/ecore_timer.eo +++ b/src/lib/ecore/ecore_timer.eo @@ -67,6 +67,7 @@ class Ecore.Timer (Eo.Base) } implements { Eo.Base.destructor; + Eo.Base.finalize; Eo.Base.event_freeze; /* XXX: can't document overriden methods * Pauses a running timer. diff --git a/src/lib/ecore_con/ecore_con_url.c b/src/lib/ecore_con/ecore_con_url.c index 021b6f22df..348785ce1e 100644 --- a/src/lib/ecore_con/ecore_con_url.c +++ b/src/lib/ecore_con/ecore_con_url.c @@ -458,17 +458,16 @@ _efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_D { url_obj = eo_do_super_ret(url_obj, MY_CLASS, url_obj, eo_constructor()); - if (!_init_count) eo_error_set(url_obj); - if (!_c_init()) + if (!_init_count || !_c_init()) { - eo_error_set(url_obj); + ERR("Failed"); return NULL; } url_con->curl_easy = _c->curl_easy_init(); if (!url_con->curl_easy) { - eo_error_set(url_obj); + ERR("Failed"); return NULL; } diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index bc83ddbddd..5a4014adf0 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -623,19 +623,6 @@ EAPI Eo * _eo_add_end(void); */ EAPI const Eo_Class *eo_class_get(const Eo *obj); -/** - * @def eo_error_set - * @brief Notify eo that there was an error when constructing, destructing or calling a function of the object. - * @param obj the object to work on. - * - * @see eo_error_get() - */ -#define eo_error_set(obj) eo_error_set_internal(obj, __FILE__, __LINE__) - -/* @cond 0 */ -EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line); -/* @endcond */ - #define _eo_add_common(klass, parent, is_ref, ...) \ ( \ _eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \ diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index d5e1d3adb7..dffdcdb639 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -935,7 +935,7 @@ _eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo return eo_id; } -Eo * +static Eo * _eo_add_internal_end(Eo *eo_id) { Eo_Stack_Frame *fptr; @@ -943,7 +943,7 @@ _eo_add_internal_end(Eo *eo_id) fptr = stack->frame_ptr; - if ((fptr == NULL) || (fptr->eo_id != eo_id)) + if ((fptr == NULL) || (eo_id && (fptr->eo_id != eo_id))) { ERR("Something very wrong happend to the call stack."); return NULL; @@ -955,16 +955,23 @@ _eo_add_internal_end(Eo *eo_id) return NULL; } - if (!fptr->o.obj->condtor_done || fptr->o.obj->do_error) { const _Eo_Class *klass = (fptr->cur_klass) ? fptr->cur_klass : fptr->o.obj->klass; - ERR("Object of class '%s' - Not all of the object constructors have been executed.", - klass->desc->name); - /* Unref twice, once for the ref in _eo_add_internal_start, and once for the basic object ref. */ - _eo_unref(fptr->o.obj); - _eo_unref(fptr->o.obj); - return NULL; + + if (!fptr->o.obj->condtor_done) + { + ERR("Object of class '%s' - Not all of the object constructors have been executed.", + klass->desc->name); + goto cleanup; + } + + if (!eo_id) + { + ERR("Object of class '%s' - Finalizing the object failed.", + klass->desc->name); + goto cleanup; + } } fptr->o.obj->finalized = EINA_TRUE; @@ -972,12 +979,19 @@ _eo_add_internal_end(Eo *eo_id) _eo_unref(fptr->o.obj); return (Eo *)eo_id; + +cleanup: + /* Unref twice, once for the ref in _eo_add_internal_start, and once for the basic object ref. */ + _eo_unref(fptr->o.obj); + _eo_unref(fptr->o.obj); + return NULL; } EAPI Eo * _eo_add_end(void) { Eo *ret = eo_finalize(); + ret = _eo_add_internal_end(ret); _eo_do_end(); return ret; } @@ -1588,16 +1602,6 @@ eo_ref_get(const Eo *obj_id) return obj->refcount; } -EAPI void -eo_error_set_internal(const Eo *obj_id, const char *file, int line) -{ - EO_OBJ_POINTER_RETURN(obj_id, obj); - - ERR("Error with obj '%p' at %s:%d.", obj, file, line); - - obj->do_error = EINA_TRUE; -} - void _eo_condtor_done(Eo *obj_id) { diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index a263c1ec64..1dbd6f0358 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -997,7 +997,7 @@ _eo_base_destructor(Eo *obj, Eo_Base_Data *pd) EOLIAN static Eo * _eo_base_finalize(Eo *obj, Eo_Base_Data *pd EINA_UNUSED) { - return _eo_add_internal_end(obj); + return obj; } EOLIAN static void diff --git a/src/lib/eo/eo_private.h b/src/lib/eo/eo_private.h index 73c6ee2870..3a18dde57e 100644 --- a/src/lib/eo/eo_private.h +++ b/src/lib/eo/eo_private.h @@ -76,7 +76,6 @@ static inline void _eo_id_release(const Eo_Id obj_id); /* Free all the entries and the tables */ static inline void _eo_free_ids_tables(void); -Eo *_eo_add_internal_end(Eo *obj); void _eo_condtor_done(Eo *obj); struct _Eo_Base @@ -101,7 +100,6 @@ struct _Eo_Object int refcount; int datarefcount; - Eina_Bool do_error:1; Eina_Bool condtor_done:1; Eina_Bool finalized:1; diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 5e59dbb835..366e341e94 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -309,7 +309,7 @@ _evas_object_image_cleanup(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, } static Eina_Bool -_init_cow(Eo *eo_obj) +_init_cow(void) { if (!evas_object_image_load_opts_cow || !evas_object_image_pixels_cow || @@ -335,7 +335,7 @@ _init_cow(Eo *eo_obj) !evas_object_image_pixels_cow || !evas_object_image_state_cow) { - eo_error_set(eo_obj); + ERR("Failed to init cow."); return EINA_FALSE; } @@ -358,7 +358,7 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o) evas_object_image_init(eo_obj); evas_object_inject(eo_obj, obj, eo_e); - if (!_init_cow(eo_obj)) + if (!_init_cow()) return NULL; o->load_opts = eina_cow_alloc(evas_object_image_load_opts_cow); diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index c77db68300..f6adda729f 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -95,7 +95,7 @@ _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj) if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE)) { - eo_error_set(eo_obj); + ERR("Failed"); return NULL; } diff --git a/src/lib/evas/canvas/evas_vg_node.c b/src/lib/evas/canvas/evas_vg_node.c index cfe5b40fae..ad0817efa6 100644 --- a/src/lib/evas/canvas/evas_vg_node.c +++ b/src/lib/evas/canvas/evas_vg_node.c @@ -247,8 +247,10 @@ _efl_vg_base_eo_base_constructor(Eo *obj, obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor()); - if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd)) - eo_error_set(obj); + if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd)) { + ERR("Failed"); + return NULL; + } eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _efl_vg_base_property_changed, pd)); pd->changed = EINA_TRUE; @@ -309,7 +311,6 @@ _efl_vg_base_eo_base_parent_set(Eo *obj, return ; on_error: - eo_error_set(obj); return ; } @@ -338,7 +339,7 @@ _efl_vg_base_efl_gfx_stack_raise(Eo *obj, Efl_VG_Base_Data *pd EINA_UNUSED) return ; on_error: - eo_error_set(obj); + ERR("Err"); } static void @@ -368,7 +369,7 @@ _efl_vg_base_efl_gfx_stack_stack_above(Eo *obj, return ; on_error: - eo_error_set(obj); + ERR("Err"); } static void @@ -398,7 +399,7 @@ _efl_vg_base_efl_gfx_stack_stack_below(Eo *obj, return ; on_error: - eo_error_set(obj); + ERR("Err"); } static void @@ -426,7 +427,7 @@ _efl_vg_base_efl_gfx_stack_lower(Eo *obj, Efl_VG_Base_Data *pd EINA_UNUSED) return ; on_error: - eo_error_set(obj); + ERR("Err"); } static Eo * diff --git a/src/lib/evas/canvas/evas_vg_root_node.c b/src/lib/evas/canvas/evas_vg_root_node.c index 1d9b573405..0f06d46fe7 100644 --- a/src/lib/evas/canvas/evas_vg_root_node.c +++ b/src/lib/evas/canvas/evas_vg_root_node.c @@ -56,7 +56,7 @@ _efl_vg_root_node_eo_base_parent_set(Eo *obj, eo_do_super(obj, EFL_VG_BASE_CLASS, eo_parent_set(parent)); if (parent && !eo_isa(parent, EVAS_VG_CLASS)) { - eo_error_set(obj); + ERR("Parent of VG_ROOT_NODE must be a VG_CLASS"); } else { @@ -76,8 +76,10 @@ _efl_vg_root_node_eo_base_constructor(Eo *obj, // Nice little hack, jump over parent constructor in Efl_VG_Root obj = eo_do_super_ret(obj, EFL_VG_BASE_CLASS, obj, eo_constructor()); eo_do(obj, parent = eo_parent_get()); - if (!eo_isa(parent, EVAS_VG_CLASS)) - eo_error_set(obj); + if (!eo_isa(parent, EVAS_VG_CLASS)) { + ERR("Parent of VG_ROOT_NODE must be a VG_CLASS"); + return NULL; + } cd = eo_data_scope_get(obj, EFL_VG_CONTAINER_CLASS); cd->children = NULL; diff --git a/src/tests/eo/constructors/constructors_simple.c b/src/tests/eo/constructors/constructors_simple.c index ed22905ade..6954bebe0c 100644 --- a/src/tests/eo/constructors/constructors_simple.c +++ b/src/tests/eo/constructors/constructors_simple.c @@ -53,10 +53,13 @@ _finalize(Eo *obj, void *class_data EINA_UNUSED) Eo *ret; Private_Data *pd = class_data; - if (pd->a < 0) eo_error_set(obj); - eo_do_super(obj, MY_CLASS, ret = eo_finalize()); + if (pd->a < 0) + { + return NULL; + } + return ret; } diff --git a/src/tests/eo/constructors/constructors_simple2.c b/src/tests/eo/constructors/constructors_simple2.c index b1b6bbe71f..fdda2a60ec 100644 --- a/src/tests/eo/constructors/constructors_simple2.c +++ b/src/tests/eo/constructors/constructors_simple2.c @@ -13,8 +13,7 @@ _constructor(Eo *obj, void *class_data EINA_UNUSED) { obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor()); - eo_error_set(obj); - return obj; + return NULL; } static Eo_Op_Description op_descs[] = { diff --git a/src/tests/eo/constructors/constructors_simple6.c b/src/tests/eo/constructors/constructors_simple6.c index 3f4c70e480..5b3f485c68 100644 --- a/src/tests/eo/constructors/constructors_simple6.c +++ b/src/tests/eo/constructors/constructors_simple6.c @@ -12,8 +12,6 @@ static void _destructor(Eo *obj, void *class_data EINA_UNUSED) { eo_do_super(obj, MY_CLASS, eo_destructor()); - - eo_error_set(obj); } static Eo_Op_Description op_descs [] = { diff --git a/src/tests/eo/suite/eo_test_general.c b/src/tests/eo/suite/eo_test_general.c index bb4f4ed291..59cb4db92a 100644 --- a/src/tests/eo/suite/eo_test_general.c +++ b/src/tests/eo/suite/eo_test_general.c @@ -683,8 +683,6 @@ START_TEST(eo_magic_checks) fail_if(wref); fail_if(parent); - eo_error_set((Eo *) buf); - fail_if(eo_data_scope_get((Eo *) buf, SIMPLE_CLASS)); eo_do(obj, eo_composite_attach((Eo *) buf));