diff options
Diffstat (limited to 'src/lib/eo/eo_private.h')
-rw-r--r-- | src/lib/eo/eo_private.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/eo/eo_private.h b/src/lib/eo/eo_private.h index 7ea5014..a238618 100644 --- a/src/lib/eo/eo_private.h +++ b/src/lib/eo/eo_private.h | |||
@@ -279,21 +279,22 @@ _eo_unref(_Eo_Object *obj) | |||
279 | --(obj->refcount); | 279 | --(obj->refcount); |
280 | if (obj->refcount == 0) | 280 | if (obj->refcount == 0) |
281 | { | 281 | { |
282 | if (obj->del_triggered) | 282 | if (obj->destructed) |
283 | { | 283 | { |
284 | ERR("Object %p deletion already triggered. You wrongly call eo_unref() within a destructor.", obj); | 284 | ERR("Object %p already destructed.", _eo_id_get(obj)); |
285 | return; | 285 | return; |
286 | } | 286 | } |
287 | obj->del_triggered = EINA_TRUE; | ||
288 | 287 | ||
289 | if (obj->destructed) | 288 | if (obj->del_triggered) |
290 | { | 289 | { |
291 | ERR("Object %p already destructed.", obj); | 290 | ERR("Object %p deletion already triggered. You wrongly call eo_unref() within a destructor.", _eo_id_get(obj)); |
292 | return; | 291 | return; |
293 | } | 292 | } |
293 | obj->del_triggered = EINA_TRUE; | ||
294 | 294 | ||
295 | _eo_del_internal(__FILE__, __LINE__, obj); | 295 | _eo_del_internal(__FILE__, __LINE__, obj); |
296 | 296 | ||
297 | obj->del_triggered = EINA_FALSE; | ||
297 | #ifdef EO_DEBUG | 298 | #ifdef EO_DEBUG |
298 | /* If for some reason it's not empty, clear it. */ | 299 | /* If for some reason it's not empty, clear it. */ |
299 | while (obj->xrefs) | 300 | while (obj->xrefs) |