devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=be5b00cfd1d011b688ae313ae24688227854fb23
commit be5b00cfd1d011b688ae313ae24688227854fb23 Author: Srivardhan Hebbar <[email protected]> Date: Wed Oct 29 08:24:53 2014 -0400 ecore_con: Added test case to check if _ecore_con_init_count goes below zero. Summary: _ecore_con_init_count should not go below zero. I've added a test case to test this and also the code to fix this. Signed-off-by: Srivardhan Hebbar <[email protected]> Reviewers: devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1603 --- src/lib/ecore_con/ecore_con.c | 6 ++++++ src/tests/ecore/ecore_test_ecore_con.c | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c index 5c2b8a3..40cff48 100644 --- a/src/lib/ecore_con/ecore_con.c +++ b/src/lib/ecore_con/ecore_con.c @@ -245,6 +245,12 @@ ecore_con_shutdown(void) Eina_List *l, *l2; Ecore_Con_Server *obj; + /* _ecore_con_init_count should not go below zero. */ + if (_ecore_con_init_count < 1) + { + ERR("Ecore_Con Shutdown called without calling Ecore_Con Init.\n"); + return 0; + } if (--_ecore_con_init_count != 0) return _ecore_con_init_count; diff --git a/src/tests/ecore/ecore_test_ecore_con.c b/src/tests/ecore/ecore_test_ecore_con.c index 2f0686e..ca0e311 100644 --- a/src/tests/ecore/ecore_test_ecore_con.c +++ b/src/tests/ecore/ecore_test_ecore_con.c @@ -302,9 +302,26 @@ START_TEST(ecore_test_ecore_con_dns) } END_TEST +START_TEST(ecore_test_ecore_con_shutdown_bef_init) +{ + int ret; + + ret = ecore_con_shutdown(); + fail_if(ret != 0); + + ret = ecore_con_init(); + fail_if(ret != 1); + + ret = ecore_con_shutdown(); + fail_if(ret != 0); +} +END_TEST + + void ecore_test_ecore_con(TCase *tc) { tcase_add_test(tc, ecore_test_ecore_con_init); tcase_add_test(tc, ecore_test_ecore_con_server); tcase_add_test(tc, ecore_test_ecore_con_dns); + tcase_add_test(tc, ecore_test_ecore_con_shutdown_bef_init); } --
