make soft asserts better by allowing them to be used in expressions
This commit is contained in:
parent
3ec3b44c7e
commit
b5ad4cdfde
2 changed files with 26 additions and 27 deletions
|
@ -28,37 +28,37 @@
|
||||||
|
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
|
|
||||||
#ifdef SOFT_ASSERT
|
|
||||||
|
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "snomask.h"
|
#include "snomask.h"
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define s_assert(expr) do \
|
#define ss_assert(expr) ( \
|
||||||
if(!(expr)) { \
|
((expr)) || ( \
|
||||||
ilog(L_MAIN, \
|
ilog(L_MAIN, \
|
||||||
"file: %s line: %d (%s): Assertion failed: (%s)", \
|
"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, \
|
sendto_realops_snomask(SNO_GENERAL, L_ALL, \
|
||||||
"file: %s line: %d (%s): Assertion failed: (%s)", \
|
"file: %s line: %d (%s): Assertion failed: (%s)", \
|
||||||
__FILE__, __LINE__, __PRETTY_FUNCTION__, #expr); \
|
__FILE__, __LINE__, __PRETTY_FUNCTION__, #expr), 0) \
|
||||||
} \
|
)
|
||||||
while(0)
|
|
||||||
#else
|
#else
|
||||||
#define s_assert(expr) do \
|
#define ss_assert(expr) ( \
|
||||||
if(!(expr)) { \
|
((expr)) || ( \
|
||||||
ilog(L_MAIN, \
|
ilog(L_MAIN, \
|
||||||
"file: %s line: %d: Assertion failed: (%s)", \
|
"file: %s line: %d: Assertion failed: (%s)", \
|
||||||
__FILE__, __LINE__, #expr); \
|
__FILE__, __LINE__, #expr), 0) || ( \
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL, \
|
sendto_realops_snomask(SNO_GENERAL, L_ALL, \
|
||||||
"file: %s line: %d: Assertion failed: (%s)" \
|
"file: %s line: %d: Assertion failed: (%s)" \
|
||||||
__FILE__, __LINE__, #expr); \
|
__FILE__, __LINE__, #expr), 0) \
|
||||||
} \
|
)
|
||||||
while(0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* evaluates to true if assertion fails */
|
||||||
|
#ifdef SOFT_ASSERT
|
||||||
|
#define s_assert(expr) (!ss_assert(expr))
|
||||||
#else
|
#else
|
||||||
#define s_assert(expr) assert(expr)
|
#define s_assert(expr) (assert(ss_assert(expr)), 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* INCLUDED_s_assert_h */
|
#endif /* INCLUDED_s_assert_h */
|
||||||
|
|
|
@ -128,27 +128,26 @@ char *rb_strerror(int error);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define slrb_assert(expr) do \
|
#define slrb_assert(expr) ( \
|
||||||
if(rb_unlikely(!(expr))) { \
|
rb_likely((expr)) || ( \
|
||||||
rb_lib_log( \
|
rb_lib_log( \
|
||||||
"file: %s line: %d (%s): Assertion failed: (%s)", \
|
"file: %s line: %d (%s): Assertion failed: (%s)", \
|
||||||
__FILE__, __LINE__, __PRETTY_FUNCTION__, #expr); \
|
__FILE__, __LINE__, __PRETTY_FUNCTION__, #expr), 0) \
|
||||||
} \
|
)
|
||||||
while(0)
|
|
||||||
#else
|
#else
|
||||||
#define slrb_assert(expr) do \
|
#define slrb_assert(expr) ( \
|
||||||
if(rb_unlikely(!(expr))) { \
|
rb_likely((expr)) || ( \
|
||||||
rb_lib_log( \
|
rb_lib_log( \
|
||||||
"file: %s line: %d: Assertion failed: (%s)", \
|
"file: %s line: %d: Assertion failed: (%s)", \
|
||||||
__FILE__, __LINE__, #expr); \
|
__FILE__, __LINE__, #expr), 0) \
|
||||||
} \
|
)
|
||||||
while(0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* evaluates to true if assertion fails */
|
||||||
#ifdef SOFT_ASSERT
|
#ifdef SOFT_ASSERT
|
||||||
#define lrb_assert(expr) slrb_assert(expr)
|
#define lrb_assert(expr) (!slrb_assert(expr))
|
||||||
#else
|
#else
|
||||||
#define lrb_assert(expr) do { slrb_assert(expr); assert(expr); } while(0)
|
#define lrb_assert(expr) (assert(slrb_assert(expr)), 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RB_SOCKADDR_HAS_SA_LEN
|
#ifdef RB_SOCKADDR_HAS_SA_LEN
|
||||||
|
|
Loading…
Reference in a new issue