X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fassert-internal.h;h=f8fd0b922cf21a57d1f32be9c202deadd54e1dae;hb=13401173f09f46c4003aa950706f35dfdadca17e;hp=431230c91d9f145e1e9f0f86ef99cdaef963eab9;hpb=cd20813f2d221faf229f522cba89b9b028438050;p=deliverable%2Fbabeltrace.git diff --git a/include/babeltrace/assert-internal.h b/include/babeltrace/assert-internal.h index 431230c91..f8fd0b922 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.