From 0d0642b31b9bac2546f9fa2c6bdc55b5ced0b7ad Mon Sep 17 00:00:00 2001 From: Robert McQueen Date: Thu, 16 Feb 2006 00:43:41 +0000 Subject: 2006-02-16 Robert McQueen * dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Patch from Rob Taylor to correct a bogus assertion that the next element to read from the iter is fixed in size. This is not the case when you are at the end of the iter, because the next element type is INVALID. * dbus/dbus-string.c (_dbus_string_init_const_len): Correct a a bogus assert which means that you may not initialise a 0-length string unless you provide a non-NULL pointer. This prevented you from marshalling messages containing zero-length arrays in some cases. * glib/dbus-gvalue.c (demarshal_collection_array): Another patch from Rob to correct bogus asserts when trying to demarshal an array and get_fixed_array got you 0 elements. Append nothing to the GArray in this case. * test/glib/test-dbus-glib.c: Add a test case for round-tripping an empty array via the glib bindings. Without all of the above patches, this new test fails. --- glib/dbus-gvalue.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'glib') diff --git a/glib/dbus-gvalue.c b/glib/dbus-gvalue.c index 3e8cf1e7..e06a8fee 100644 --- a/glib/dbus-gvalue.c +++ b/glib/dbus-gvalue.c @@ -1081,9 +1081,10 @@ demarshal_collection_array (DBusGValueMarshalCtx *context, dbus_message_iter_get_fixed_array (&subiter, &msgarray, &msgarray_len); - g_assert (msgarray != NULL); - g_assert (msgarray_len >= 0); - g_array_append_vals (ret, msgarray, (guint) msgarray_len); + g_assert (msgarray != NULL || msgarray_len == 0); + + if (msgarray_len) + g_array_append_vals (ret, msgarray, (guint) msgarray_len); g_value_set_boxed_take_ownership (value, ret); -- cgit