Eo: Add internal function call on pointer errors
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 29 Dec 2015 10:42:05 +0000 (19:42 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 29 Dec 2015 11:55:50 +0000 (20:55 +0900)
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.

src/lib/eo/eo_ptr_indirection.c
src/lib/eo/eo_ptr_indirection.h

index ee55901..687ec8a 100644 (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);
+}
index e831a4a..458d2a0 100644 (file)
 
 #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)