diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h index 290f7a30e3..f8f761d39f 100644 --- a/include/asterisk/utils.h +++ b/include/asterisk/utils.h @@ -860,6 +860,13 @@ void DO_CRASH_NORETURN __ast_assert_failed(int condition, const char *condition_ #ifdef AST_DEVMODE #define ast_assert(a) _ast_assert(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__) +#define ast_assert_return(a, ...) \ +({ \ + if (__builtin_expect(!(a), 1)) { \ + _ast_assert(0, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__); \ + return __VA_ARGS__; \ + }\ +}) static void force_inline _ast_assert(int condition, const char *condition_str, const char *file, int line, const char *function) { if (__builtin_expect(!condition, 1)) { @@ -868,6 +875,12 @@ static void force_inline _ast_assert(int condition, const char *condition_str, c } #else #define ast_assert(a) +#define ast_assert_return(a, ...) \ +({ \ + if (__builtin_expect(!(a), 1)) { \ + return __VA_ARGS__; \ + }\ +}) #endif /*!