summaryrefslogtreecommitdiff
path: root/dbus/dbus-internals.h
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2018-11-20 12:24:35 +0000
committerSimon McVittie <smcv@collabora.com>2018-11-20 12:58:17 +0000
commit16d2453ffada1d0c84996f392c7e4cad091da715 (patch)
tree22a4de4f0b15cefa883649f78aae43dfee8251bd /dbus/dbus-internals.h
parenteef153e82815e19851d3f6dc1a9b1c901c41eb2b (diff)
downloaddbus-16d2453ffada1d0c84996f392c7e4cad091da715.tar.gz
Improve diagnostics for error assertion failures
Signed-off-by: Simon McVittie <smcv@collabora.com>
Diffstat (limited to 'dbus/dbus-internals.h')
-rw-r--r--dbus/dbus-internals.h32
1 files changed, 22 insertions, 10 deletions
diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h
index a11c6bc1..04bb8a8c 100644
--- a/dbus/dbus-internals.h
+++ b/dbus/dbus-internals.h
@@ -192,7 +192,7 @@ void _dbus_real_assert_not_reached (const char *explanation,
#define _DBUS_ALIGNOF(type) \
(_DBUS_STRUCT_OFFSET (struct { char _1; type _2; }, _2))
-#ifdef DBUS_DISABLE_CHECKS
+#if defined(DBUS_DISABLE_CHECKS) || defined(DBUS_DISABLE_ASSERT)
/* this is an assert and not an error, but in the typical --disable-checks case (you're trying
* to really minimize code size), disabling these assertions makes sense.
*/
@@ -201,35 +201,47 @@ void _dbus_real_assert_not_reached (const char *explanation,
#define _DBUS_ASSERT_ERROR_XOR_BOOL(error, retval) do { } while (0)
#else
static inline void
-_dbus_assert_error_is_set (const DBusError *error)
+_dbus_assert_error_is_set (const DBusError *error,
+ const char *file,
+ int line,
+ const char *func)
{
- _dbus_assert (error == NULL || dbus_error_is_set (error));
+ _dbus_real_assert (error == NULL || dbus_error_is_set (error),
+ "error is set", file, line, func);
}
static inline void
-_dbus_assert_error_is_clear (const DBusError *error)
+_dbus_assert_error_is_clear (const DBusError *error,
+ const char *file,
+ int line,
+ const char *func)
{
- _dbus_assert (error == NULL || !dbus_error_is_set (error));
+ _dbus_real_assert (error == NULL || !dbus_error_is_set (error),
+ "error is clear", file, line, func);
}
static inline void
_dbus_assert_error_xor_bool (const DBusError *error,
- dbus_bool_t retval)
+ dbus_bool_t retval,
+ const char *file,
+ int line,
+ const char *func)
{
- _dbus_assert (error == NULL || dbus_error_is_set (error) == !retval);
+ _dbus_real_assert (error == NULL || dbus_error_is_set (error) == !retval,
+ "error is consistent with boolean result", file, line, func);
}
/**
* Assert that error is set, unless it is NULL in which case we cannot
* tell whether it would have been set.
*/
-#define _DBUS_ASSERT_ERROR_IS_SET(error) _dbus_assert_error_is_set(error)
+#define _DBUS_ASSERT_ERROR_IS_SET(error) _dbus_assert_error_is_set (error, __FILE__, __LINE__, _DBUS_FUNCTION_NAME)
/**
* Assert that error is not set, unless it is NULL in which case we cannot
* tell whether it would have been set.
*/
-#define _DBUS_ASSERT_ERROR_IS_CLEAR(error) _dbus_assert_error_is_clear(error)
+#define _DBUS_ASSERT_ERROR_IS_CLEAR(error) _dbus_assert_error_is_clear (error, __FILE__, __LINE__, _DBUS_FUNCTION_NAME)
/**
* Assert that error is consistent with retval: if error is not NULL,
@@ -237,7 +249,7 @@ _dbus_assert_error_xor_bool (const DBusError *error,
*
* retval can be a boolean expression like "result != NULL".
*/
-#define _DBUS_ASSERT_ERROR_XOR_BOOL(error, retval), _dbus_assert_error_xor_bool (error, retval)
+#define _DBUS_ASSERT_ERROR_XOR_BOOL(error, retval) _dbus_assert_error_xor_bool (error, retval, __FILE__, __LINE__, _DBUS_FUNCTION_NAME)
#endif
#define _dbus_return_if_error_is_set(error) _dbus_return_if_fail ((error) == NULL || !dbus_error_is_set ((error)))