diff --git a/legacy/eobj/tests/eo_test_general.c b/legacy/eobj/tests/eo_test_general.c index e1d5bfafbe..12f79dd06a 100644 --- a/legacy/eobj/tests/eo_test_general.c +++ b/legacy/eobj/tests/eo_test_general.c @@ -216,10 +216,30 @@ START_TEST(eo_refs) fail_if(eo_ref_get(obj) != 1); #endif + /* Check we don't seg if there's an extra xref. */ + eo_xref(obj, obj2); + eo_unref(obj); + eo_unref(obj); eo_unref(obj2); eo_unref(obj3); + /* Check hierarchy */ + obj = eo_add(SIMPLE_CLASS, NULL); + obj2 = eo_add(SIMPLE_CLASS, obj); + + Eo *wref; + eo_do(obj2, eo_wref_add(&wref)); + fail_if(!wref); + + eo_unref(obj2); + + fail_if(!wref); /* Parent is still holding a reference. */ + + eo_unref(obj); + + fail_if(wref); + /* Just check it doesn't seg atm. */ obj = eo_add(SIMPLE_CLASS, NULL); eo_ref(obj);