diff --git a/legacy/eobj/lib/eo.c b/legacy/eobj/lib/eo.c index a3f5125411..e67a917d69 100644 --- a/legacy/eobj/lib/eo.c +++ b/legacy/eobj/lib/eo.c @@ -1361,6 +1361,12 @@ _eo_error_unset(Eo *obj) void _eo_condtor_done(Eo *obj) { + if (obj->condtor_done) + { + ERR("Object %p is already constructed at this point.", obj); + return; + } + obj->condtor_done = EINA_TRUE; } diff --git a/legacy/eobj/tests/eo_test_general.c b/legacy/eobj/tests/eo_test_general.c index bba143cfce..e784afbebb 100644 --- a/legacy/eobj/tests/eo_test_general.c +++ b/legacy/eobj/tests/eo_test_general.c @@ -15,6 +15,12 @@ START_TEST(eo_simple) Eo *obj = eo_add(EO_BASE_CLASS, NULL); fail_if(obj); + obj = eo_add(SIMPLE_CLASS, NULL); + fail_if(!obj); + eo_do(obj, eo_constructor()); + eo_do(obj, eo_destructor()); + eo_unref(obj); + eo_shutdown(); } END_TEST