From 474c668038ea4f999c4a5957ed728d78634bda12 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 1 May 2012 11:25:00 +0000 Subject: [PATCH] Eo: Fixed a bug in wref del. SVN revision: 70572 --- legacy/eobj/lib/eo_base_class.c | 1 + legacy/eobj/tests/eo_test_general.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/legacy/eobj/lib/eo_base_class.c b/legacy/eobj/lib/eo_base_class.c index 787e48bb1d..9161cdb015 100644 --- a/legacy/eobj/lib/eo_base_class.c +++ b/legacy/eobj/lib/eo_base_class.c @@ -146,6 +146,7 @@ _wref_del(const Eo *obj, const void *class_data EINA_UNUSED, va_list *list) return; } eo_event_callback_del((Eo *) obj, EO_EV_DEL, _eo_weak_ref_cb, wref); + *wref = NULL; } /* EOF Weak reference. */ diff --git a/legacy/eobj/tests/eo_test_general.c b/legacy/eobj/tests/eo_test_general.c index ff4dcfd03c..080332276b 100644 --- a/legacy/eobj/tests/eo_test_general.c +++ b/legacy/eobj/tests/eo_test_general.c @@ -69,6 +69,7 @@ START_TEST(eo_weak_reference) eo_init(); Eo *obj = eo_add(SIMPLE_CLASS, NULL); + Eo *obj2 = eo_add(SIMPLE_CLASS, NULL); Eo *wref; eo_do(obj, eo_wref_add(&wref)); fail_if(!wref); @@ -92,8 +93,16 @@ START_TEST(eo_weak_reference) eo_do(obj, eo_wref_add(&wref)); eo_do(obj, eo_wref_del(&wref)); + fail_if(wref); + + eo_do(obj, eo_wref_add(&wref)); + eo_do(obj2, eo_wref_del(&wref)); + fail_if(!wref); + eo_do(obj, eo_wref_del(&wref)); + fail_if(wref); eo_unref(obj); + eo_unref(obj2); eo_shutdown();