Eo: Add internal function call on pointer errors

Useful for GDB: break on this function when things go wrong.
Similar to eina_safety.

I guess we could set some Eina_Error and maybe even have error
callbacks for easier application debugging. Later.
This commit is contained in:
Jean-Philippe Andre 2015-12-29 19:42:05 +09:00
parent 3059859e28
commit 0dd9e02df2
2 changed files with 15 additions and 4 deletions

View File

@ -15,3 +15,9 @@ _Eo_Ids_Table *_empty_table = NULL;
/* Next generation to use when assigning a new entry to a Eo pointer */
Generation_Counter _eo_generation_counter = 0;
void
_eo_pointer_error(const char *msg)
{
ERR("%s", msg);
}

View File

@ -10,13 +10,18 @@
#ifdef HAVE_EO_ID
void _eo_pointer_error(const char *msg);
#define _EO_POINTER_ERR(fmt, ptr) \
do { char buf[256]; sprintf(buf, fmt, ptr); _eo_pointer_error(buf); } while (0)
#define EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, ret) \
_Eo_Object *obj; \
do { \
if (!obj_id) return ret; \
obj = _eo_obj_pointer_get((Eo_Id)obj_id); \
if (!obj) { \
ERR("Obj (%p) is an invalid ref.", obj_id); \
_EO_POINTER_ERR("Obj (%p) is an invalid ref.", obj_id); \
return ret; \
} \
} while (0)
@ -27,7 +32,7 @@
if (!obj_id) return; \
obj = _eo_obj_pointer_get((Eo_Id)obj_id); \
if (!obj) { \
ERR("Obj (%p) is an invalid ref.", obj_id); \
_EO_POINTER_ERR("Obj (%p) is an invalid ref.", obj_id); \
return; \
} \
} while (0)
@ -38,7 +43,7 @@
if (!klass_id) return ret; \
klass = _eo_class_pointer_get(klass_id); \
if (!klass) { \
ERR("Klass (%p) is an invalid ref.", klass_id); \
_EO_POINTER_ERR("Klass (%p) is an invalid ref.", klass_id); \
return ret; \
} \
} while (0)
@ -49,7 +54,7 @@
if (!klass_id) return; \
klass = _eo_class_pointer_get(klass_id); \
if (!klass) { \
ERR("Klass (%p) is an invalid ref.", klass_id); \
_EO_POINTER_ERR("Klass (%p) is an invalid ref.", klass_id); \
return; \
} \
} while (0)