summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2004-11-27 07:30:22 +0000
committerHavoc Pennington <hp@redhat.com>2004-11-27 07:30:22 +0000
commitb60c835d346b7e214e627abd8e0cdf06932313a7 (patch)
treec008f48c0c02ac878a4ff1400ee625805f496e16 /dbus/dbus-message.c
parent65090abbb9582d25a795f1dd835ea03973be75e7 (diff)
2004-11-27 Havoc Pennington <hp@redhat.com>
* dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts are disabled (_dbus_string_get_const_data): inline when asserts are disabled * dbus/dbus-message.c: record the _dbus_current_generation of creation so we can complain if dbus_shutdown() is used improperly. Do this only if checks are enabled. * dbus/dbus-connection.c: ditto
Diffstat (limited to 'dbus/dbus-message.c')
-rw-r--r--dbus/dbus-message.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index a76d3b55..df1c789a 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -104,6 +104,10 @@ struct DBusMessage
dbus_uint32_t changed_stamp; /**< Incremented when iterators are invalidated. */
DBusDataSlotList slot_list; /**< Data stored by allocated integer ID */
+
+#ifndef DBUS_DISABLE_CHECKS
+ int generation; /**< _dbus_current_generation when message was created */
+#endif
};
enum {
@@ -248,6 +252,9 @@ get_string_field (DBusMessage *message,
int offset;
const char *data;
+ _dbus_return_val_if_fail (message->generation == _dbus_current_generation,
+ NULL);
+
offset = message->header_fields[field].value_offset;
_dbus_assert (field <= DBUS_HEADER_FIELD_LAST);
@@ -1607,6 +1614,9 @@ dbus_message_new_empty_header (void)
message = dbus_new (DBusMessage, 1);
if (message == NULL)
return NULL;
+#ifndef DBUS_DISABLE_CHECKS
+ message->generation = _dbus_current_generation;
+#endif
}
message->refcount.value = 1;
@@ -1947,6 +1957,9 @@ dbus_message_copy (const DBusMessage *message)
retval->reply_serial = message->reply_serial;
retval->header_padding = message->header_padding;
retval->locked = FALSE;
+#ifndef DBUS_DISABLE_CHECKS
+ retval->generation = message->generation;
+#endif
if (!_dbus_string_init_preallocated (&retval->header,
_dbus_string_get_length (&message->header)))
@@ -2000,6 +2013,7 @@ dbus_message_ref (DBusMessage *message)
dbus_int32_t old_refcount;
_dbus_return_val_if_fail (message != NULL, NULL);
+ _dbus_return_val_if_fail (message->generation == _dbus_current_generation, NULL);
old_refcount = _dbus_atomic_inc (&message->refcount);
_dbus_assert (old_refcount >= 1);
@@ -2019,6 +2033,7 @@ dbus_message_unref (DBusMessage *message)
dbus_int32_t old_refcount;
_dbus_return_if_fail (message != NULL);
+ _dbus_return_if_fail (message->generation == _dbus_current_generation);
old_refcount = _dbus_atomic_dec (&message->refcount);