summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--dbus/dbus-internals.c47
-rw-r--r--dbus/dbus-internals.h22
-rw-r--r--doc/config-file.txt2
4 files changed, 69 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 4ac2af96..fb5c8c82 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2003-04-05 Havoc Pennington <hp@pobox.com>
+ * doc/config-file.txt (Elements): fix docs of <auth> to reflect
+ reality; in fact multiple mechanisms are allowed.
+
+ * dbus/dbus-internals.c (_dbus_real_assert)
+ (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
+ _dbus_assert_not_reached() into functions, so that they don't show
+ up in basic block counts for test coverage, and don't use up as
+ much disk space. Does mean slower execution speed though, so
+ assumes --disable-asserts is the normal production case.
+
+2003-04-05 Havoc Pennington <hp@pobox.com>
+
* test/Makefile.am (dist-hook): also dist *.in files
* NEWS: update
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])))
diff --git a/doc/config-file.txt b/doc/config-file.txt
index 8c2152b5..897c2380 100644
--- a/doc/config-file.txt
+++ b/doc/config-file.txt
@@ -89,7 +89,7 @@ Elements:
Lists permitted authorization mechanisms. If this element doesn't
exist, then all known mechanisms are allowed. If there are
- multiple <auth> elements, the last one wins (they are not merged).
+ multiple <auth> elements, all the listed mechanisms are allowed.
The order in which mechanisms are listed is not meaningful.
Example: <auth>EXTERNAL</auth>