From a6027845074ecb3e710471c26a760b1f9a52a007 Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Wed, 13 May 2015 17:22:24 +0200 Subject: [PATCH] mx_util: Add mx_assert_return_*() --- mx_util.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mx_util.h b/mx_util.h index 26d627e..144b3cb 100644 --- a/mx_util.h +++ b/mx_util.h @@ -5,6 +5,34 @@ #include #include +#include "mx_log.h" + +#ifdef MX_NDEBUG +# include +# define mx_assert_return_minus_errno(test, eno) \ + assert(test) +# define mx_assert_return_NULL(test, eno) \ + assert(test) +#else +# define mx_assert_return_minus_errno(test, eno) \ + do {\ + if (!(test)) {\ + errno=(eno);\ + mx_log_debug("Assertion '" #test "' failed. Returning -(errno=" #eno ") [%d]: %m", -errno);\ + return -errno;\ + }\ + } while (0) + +# define mx_assert_return_NULL(test, eno) \ + do {\ + if (!(test)) {\ + errno=(eno);\ + mx_log_debug("Assertion '" #test "' failed. Setting errno=" #eno " [%d] and returning NULL: %m", errno);\ + return NULL;\ + }\ + } while (0) +#endif + #undef mx_free_null #define mx_free_null(a) do { free(a); (a) = NULL; } while(0)