X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fassert-internal.h;h=f8fd0b922cf21a57d1f32be9c202deadd54e1dae;hb=7e69c04f557e46fb50e5a888a3bc3451afbd3b8e;hp=431230c91d9f145e1e9f0f86ef99cdaef963eab9;hpb=312c056ae3d374b253fa0cfe5ed576c0b0e5e569;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.