X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fassert-internal.h;h=f8fd0b922cf21a57d1f32be9c202deadd54e1dae;hb=4ee4117810e51dba802348ab17b2e0b1cc264b69;hp=431230c91d9f145e1e9f0f86ef99cdaef963eab9;hpb=1de6a2b0fd2c33173d249d639203fa1ceada1f9b;p=babeltrace.git diff --git a/include/babeltrace/assert-internal.h b/include/babeltrace/assert-internal.h index 431230c9..f8fd0b92 100644 --- a/include/babeltrace/assert-internal.h +++ b/include/babeltrace/assert-internal.h @@ -28,12 +28,22 @@ #include #ifdef BT_DEBUG_MODE + +extern void bt_common_assert_failed(const char *file, int line, + const char *func, const char *assertion) __attribute__((noreturn)); + /* * Internal assertion (to detect logic errors on which the library user * has no influence). Use BT_ASSERT_PRE() to check a precondition which * must be directly or indirectly satisfied by the library user. */ -# define BT_ASSERT(_cond) do { assert(_cond); } while (0) +#define BT_ASSERT(_cond) \ + do { \ + if (!(_cond)) { \ + bt_common_assert_failed(__FILE__, __LINE__, __func__, \ + TOSTRING(_cond)); \ + } \ + } while (0) /* * Marks a function as being only used within a BT_ASSERT() context.