From 402bad01866594529f412553e26039f7cffe4620 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Sun, 10 Jun 2012 14:04:58 +0000 Subject: [PATCH] Eo: error when calling constructor/destructor out of context. SVN revision: 71900 --- legacy/eobj/lib/eo.c | 6 ++++++ legacy/eobj/tests/eo_test_general.c | 6 ++++++ 2 files changed, 12 insertions(+) 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