X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/f1fe7b4b28739cd593b82ec4f146b5df465ab234..b2ee72e4487d9ec90ff64f63d8f8c3974d96bc5c:/include/s_assert.h diff --git a/include/s_assert.h b/include/s_assert.h index 60ea28cd..d6483413 100644 --- a/include/s_assert.h +++ b/include/s_assert.h @@ -26,39 +26,39 @@ #ifndef INCLUDED_s_assert_h #define INCLUDED_s_assert_h -#include "config.h" - -#ifdef SOFT_ASSERT +#include "defaults.h" #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 */