From dc6a61a15b2d9cdc6504753fa9eb0a718f99d6d8 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Fri, 24 Jan 2003 23:34:01 +0000 Subject: 2003-01-25 Anders Carlsson * dbus/dbus-connection.c: (dbus_connection_send_message): Unlock the message in case it was sent earlier. (dbus_connection_send_message_with_reply_and_block): Remove the reply message from the list. * dbus/dbus-marshal.c: (_dbus_demarshal_string_array): Set array_len and new_pos correctly. (_dbus_marshal_test): Remove debug output. * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_get_reply_serial): New function that returns the reply serial. (_dbus_message_unlock): New function that unlocks a message and resets its header. (dbus_message_append_string_array), (dbus_message_get_fields_valist), (dbus_message_iter_get_field_type), (dbus_message_iter_get_string_array), (dbus_message_get_fields), (dbus_message_append_fields_valist): Handle string arrays. (dbus_message_set_sender): Make this function public since the bus daemon needs it. (decode_header_data): Set the reply serial to -1 initially. * dbus/dbus-message.h: Add dbus_message_set_sender. --- dbus/dbus-marshal.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'dbus/dbus-marshal.c') diff --git a/dbus/dbus-marshal.c b/dbus/dbus-marshal.c index 148ce08e..9b9e9e62 100644 --- a/dbus/dbus-marshal.c +++ b/dbus/dbus-marshal.c @@ -718,9 +718,9 @@ _dbus_demarshal_string_array (DBusString *str, { int len, i, j; char **retval; - + len = _dbus_demarshal_uint32 (str, byte_order, pos, &pos); - + retval = dbus_new (char *, len); if (!retval) @@ -734,6 +734,12 @@ _dbus_demarshal_string_array (DBusString *str, goto error; } + if (new_pos) + *new_pos = pos; + + if (array_len) + *array_len = len; + return retval; error: @@ -1033,7 +1039,6 @@ _dbus_marshal_test (void) /* Marshal signed integer arrays */ if (!_dbus_marshal_int32_array (&str, DBUS_BIG_ENDIAN, array1, 3)) _dbus_assert_not_reached ("could not marshal integer array"); - _dbus_verbose_bytes_of_string (&str, 0, _dbus_string_get_length (&str)); array2 = _dbus_demarshal_int32_array (&str, DBUS_BIG_ENDIAN, pos, &pos, &len); printf ("length is: %d\n", len); if (len != 3) -- cgit