} \
while (0)
+#define EINA_SAFETY_ON_TRUE_GOTO(exp, label) \
+ do \
+ { \
+ if (EINA_UNLIKELY(exp)) \
+ { \
+ eina_error_set(EINA_ERROR_SAFETY_FAILED); \
+ EINA_LOG_ERR("%s", "safety check failed: " #exp " is true"); \
+ goto label; \
+ } \
+ } \
+ while (0)
+
#define EINA_SAFETY_ON_FALSE_RETURN(exp) \
do \
{ \
} \
while (0)
+#define EINA_SAFETY_ON_FALSE_GOTO(exp, label) \
+ do \
+ { \
+ if (EINA_UNLIKELY(!(exp))) \
+ { \
+ eina_error_set(EINA_ERROR_SAFETY_FAILED); \
+ EINA_LOG_ERR("%s", "safety check failed: " #exp " is false"); \
+ goto label; \
+ } \
+ } \
+ while (0)
+
#ifdef EINA_ARG_NONNULL
/* make EINA_ARG_NONNULL void so GCC does not optimize safety checks */
#undef EINA_ARG_NONNULL