summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-06-21 16:19:21 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-08-11 11:51:43 +0100
commit213acdb71c9ba679b75bff95de25d126bb659465 (patch)
tree3872d7ac40f2778078853e028949fc9dfcc788ee /dbus
parent70fb675a108dbf660d384150429c9af085b0c48e (diff)
downloaddbus-213acdb71c9ba679b75bff95de25d126bb659465.tar.gz
Add _DBUS_STATIC_ASSERT (based on GLib's G_STATIC_ASSERT) and use it
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39636 Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-errors.c2
-rw-r--r--dbus/dbus-hash.c2
-rw-r--r--dbus/dbus-internals.h6
-rw-r--r--dbus/dbus-string-private.h2
4 files changed, 12 insertions, 0 deletions
diff --git a/dbus/dbus-errors.c b/dbus/dbus-errors.c
index 5f27501c..db3305b9 100644
--- a/dbus/dbus-errors.c
+++ b/dbus/dbus-errors.c
@@ -78,6 +78,8 @@ typedef struct
} DBusRealError;
+_DBUS_STATIC_ASSERT (sizeof (DBusRealError) == sizeof (DBusError));
+
/**
* Returns a longer message describing an error name.
* If the error name is unknown, returns the name
diff --git a/dbus/dbus-hash.c b/dbus/dbus-hash.c
index 67ef4ced..b104f32f 100644
--- a/dbus/dbus-hash.c
+++ b/dbus/dbus-hash.c
@@ -222,6 +222,8 @@ typedef struct
int n_entries_on_init; /**< used to detect table resize since initialization */
} DBusRealHashIter;
+_DBUS_STATIC_ASSERT (sizeof (DBusRealHashIter) == sizeof (DBusHashIter));
+
static DBusHashEntry* find_direct_function (DBusHashTable *table,
void *key,
dbus_bool_t create_if_not_found,
diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h
index dcef7d7f..06e6c16b 100644
--- a/dbus/dbus-internals.h
+++ b/dbus/dbus-internals.h
@@ -362,6 +362,12 @@ dbus_bool_t _dbus_read_uuid_file (const DBusString *filename,
dbus_bool_t _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str);
+#define _DBUS_PASTE2(a, b) a ## b
+#define _DBUS_PASTE(a, b) _DBUS_PASTE2 (a, b)
+#define _DBUS_STATIC_ASSERT(expr) \
+ typedef struct { char _assertion[(expr) ? 1 : -1]; } \
+ _DBUS_PASTE (_DBUS_STATIC_ASSERT_, __LINE__)
+
DBUS_END_DECLS
#endif /* DBUS_INTERNALS_H */
diff --git a/dbus/dbus-string-private.h b/dbus/dbus-string-private.h
index 365d89a3..b17c2b9f 100644
--- a/dbus/dbus-string-private.h
+++ b/dbus/dbus-string-private.h
@@ -24,6 +24,7 @@
#ifndef DBUS_STRING_PRIVATE_H
#define DBUS_STRING_PRIVATE_H
+#include <dbus/dbus-internals.h>
#include <dbus/dbus-memory.h>
#include <dbus/dbus-types.h>
@@ -51,6 +52,7 @@ typedef struct
unsigned int align_offset : 3; /**< str - align_offset is the actual malloc block */
} DBusRealString;
+_DBUS_STATIC_ASSERT (sizeof (DBusRealString) == sizeof (DBusString));
/**
* @defgroup DBusStringInternals DBusString implementation details