summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-internals.c47
-rw-r--r--dbus/dbus-internals.h22
2 files changed, 56 insertions, 13 deletions
diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c
index f1fbf963..8d803977 100644
--- a/dbus/dbus-internals.c
+++ b/dbus/dbus-internals.c
@@ -345,6 +345,53 @@ _dbus_type_to_string (int type)
}
}
+#ifndef DBUS_DISABLE_ASSERT
+/**
+ * Internals of _dbus_assert(); it's a function
+ * rather than a macro with the inline code so
+ * that the assertion failure blocks don't show up
+ * in test suite coverage, and to shrink code size.
+ *
+ * @param condition TRUE if assertion succeeded
+ * @param condition_text condition as a string
+ * @param file file the assertion is in
+ * @param line line the assertion is in
+ */
+void
+_dbus_real_assert (dbus_bool_t condition,
+ const char *condition_text,
+ const char *file,
+ int line)
+{
+ if (!condition)
+ {
+ _dbus_warn ("Assertion failed \"%s\" file \"%s\" line %d\n",
+ condition_text, file, line);
+ _dbus_abort ();
+ }
+}
+
+/**
+ * Internals of _dbus_assert_not_reached(); it's a function
+ * rather than a macro with the inline code so
+ * that the assertion failure blocks don't show up
+ * in test suite coverage, and to shrink code size.
+ *
+ * @param explanation what was reached that shouldn't have been
+ * @param file file the assertion is in
+ * @param line line the assertion is in
+ */
+void
+_dbus_real_assert_not_reached (const char *explanation,
+ const char *file,
+ int line)
+{
+ _dbus_warn ("File \"%s\" line %d should not have been reached: %s\n",
+ file, line, explanation);
+ _dbus_abort ();
+}
+#endif /* DBUS_DISABLE_ASSERT */
+
#ifdef DBUS_BUILD_TESTS
static dbus_bool_t
run_failing_each_malloc (int n_mallocs,
diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h
index 7e4138c9..dbfd0681 100644
--- a/dbus/dbus-internals.h
+++ b/dbus/dbus-internals.h
@@ -76,26 +76,22 @@ const char* _dbus_strerror (int error_number);
#ifdef DBUS_DISABLE_ASSERT
#define _dbus_assert(condition)
#else
+void _dbus_real_assert (dbus_bool_t condition,
+ const char *condition_text,
+ const char *file,
+ int line);
#define _dbus_assert(condition) \
-do { \
- if (!(condition)) \
- { \
- _dbus_warn ("Assertion failed \"%s\" file \"%s\" line %d\n", \
- #condition, __FILE__, __LINE__); \
- _dbus_abort (); \
- } \
-} while (0)
+ _dbus_real_assert ((condition), #condition, __FILE__, __LINE__)
#endif /* !DBUS_DISABLE_ASSERT */
#ifdef DBUS_DISABLE_ASSERT
#define _dbus_assert_not_reached(explanation)
#else
+void _dbus_real_assert_not_reached (const char *explanation,
+ const char *file,
+ int line);
#define _dbus_assert_not_reached(explanation) \
-do { \
- _dbus_warn ("File \"%s\" line %d should not have been reached: %s\n", \
- __FILE__, __LINE__, (explanation)); \
- _dbus_abort (); \
-} while (0)
+ _dbus_real_assert_not_reached (explanation, __FILE__, __LINE__)
#endif /* !DBUS_DISABLE_ASSERT */
#define _DBUS_N_ELEMENTS(array) ((int) (sizeof ((array)) / sizeof ((array)[0])))