From a2cdb54d6bb70fa393dc61f92129d974e06434eb Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 5 Jun 2012 12:05:06 +0000 Subject: [PATCH] Eo: renamed the Magic for freed objects and better handle deleted objects. Now we differentiate between deleted but not freed vs deleted and freed objects. SVN revision: 71710 --- legacy/eobj/lib/eo.c | 10 ++++------ legacy/eobj/lib/eo_private.h | 8 ++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/legacy/eobj/lib/eo.c b/legacy/eobj/lib/eo.c index 647bd9b3c9..5dd58a44c6 100644 --- a/legacy/eobj/lib/eo.c +++ b/legacy/eobj/lib/eo.c @@ -1189,13 +1189,10 @@ eo_ref(const Eo *_obj) static inline void _eo_del_internal(Eo *obj) { - if (obj->del) - return; /* We need that for the event callbacks that may ref/unref. */ obj->refcount++; eo_do(obj, eo_event_callback_call(EO_EV_DEL, NULL, NULL)); - obj->del = EINA_TRUE; const Eo_Class *klass = eo_class_get(obj); Eo_Kls_Itr prev_state; @@ -1222,13 +1219,14 @@ _eo_del_internal(Eo *obj) eo_composite_object_detach(obj, emb_obj); } + obj->del = EINA_TRUE; obj->refcount--; } static inline void _eo_free(Eo *obj) { - EINA_MAGIC_SET(obj, EO_DELETED_EINA_MAGIC); + EINA_MAGIC_SET(obj, EO_FREED_EINA_MAGIC); free(obj); } @@ -1441,8 +1439,8 @@ eo_init(void) } eina_magic_string_static_set(EO_EINA_MAGIC, EO_EINA_MAGIC_STR); - eina_magic_string_static_set(EO_DELETED_EINA_MAGIC, - EO_DELETED_EINA_MAGIC_STR); + eina_magic_string_static_set(EO_FREED_EINA_MAGIC, + EO_FREED_EINA_MAGIC_STR); eina_magic_string_static_set(EO_CLASS_EINA_MAGIC, EO_CLASS_EINA_MAGIC_STR); diff --git a/legacy/eobj/lib/eo_private.h b/legacy/eobj/lib/eo_private.h index 3559355397..631ce01c6a 100644 --- a/legacy/eobj/lib/eo_private.h +++ b/legacy/eobj/lib/eo_private.h @@ -1,11 +1,11 @@ #ifndef _EO_PRIVATE_H #define _EO_PRIVATE_H -#define EO_EINA_MAGIC 0xa186bc32 /* Nothing magical about this number. */ +#define EO_EINA_MAGIC 0xa186bc32 #define EO_EINA_MAGIC_STR "Eo" -#define EO_DELETED_EINA_MAGIC 0xa186bb32 /* Nothing magical about this number. */ -#define EO_DELETED_EINA_MAGIC_STR "Eo - Deleted object" -#define EO_CLASS_EINA_MAGIC 0xa186ba32 /* Nothing magical about this number. */ +#define EO_FREED_EINA_MAGIC 0xa186bb32 +#define EO_FREED_EINA_MAGIC_STR "Eo - Freed object" +#define EO_CLASS_EINA_MAGIC 0xa186ba32 #define EO_CLASS_EINA_MAGIC_STR "Eo Class" #define EO_MAGIC_RETURN_VAL(d, magic, ret) \