X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/9b24cbdecc72337e825764f39cdf59ca23f41788..6d58b1d38efff2737357edf9ab84abcf9261baba:/include/s_assert.h diff --git a/include/s_assert.h b/include/s_assert.h index 74a48198..d6483413 100644 --- a/include/s_assert.h +++ b/include/s_assert.h @@ -28,37 +28,37 @@ #include "defaults.h" -#ifdef SOFT_ASSERT - #include "logger.h" #include "send.h" #include "snomask.h" #ifdef __GNUC__ -#define s_assert(expr) do \ - if(!(expr)) { \ +#define ss_assert(expr) ( \ + ((expr)) || ( \ ilog(L_MAIN, \ "file: %s line: %d (%s): Assertion failed: (%s)", \ - __FILE__, __LINE__, __PRETTY_FUNCTION__, #expr); \ + __FILE__, __LINE__, __PRETTY_FUNCTION__, #expr), 0) || (\ sendto_realops_snomask(SNO_GENERAL, L_ALL, \ "file: %s line: %d (%s): Assertion failed: (%s)", \ - __FILE__, __LINE__, __PRETTY_FUNCTION__, #expr); \ - } \ - while(0) + __FILE__, __LINE__, __PRETTY_FUNCTION__, #expr), 0) \ + ) #else -#define s_assert(expr) do \ - if(!(expr)) { \ +#define ss_assert(expr) ( \ + ((expr)) || ( \ ilog(L_MAIN, \ "file: %s line: %d: Assertion failed: (%s)", \ - __FILE__, __LINE__, #expr); \ + __FILE__, __LINE__, #expr), 0) || ( \ sendto_realops_snomask(SNO_GENERAL, L_ALL, \ "file: %s line: %d: Assertion failed: (%s)" \ - __FILE__, __LINE__, #expr); \ - } \ - while(0) + __FILE__, __LINE__, #expr), 0) \ + ) #endif + +/* evaluates to true if assertion fails */ +#ifdef SOFT_ASSERT +#define s_assert(expr) (!ss_assert(expr)) #else -#define s_assert(expr) assert(expr) +#define s_assert(expr) (assert(ss_assert(expr)), 0) #endif #endif /* INCLUDED_s_assert_h */