From 9548df2ce95cee1942f615b6f2abf0029e680f5a Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 13 Jun 2005 15:36:31 +0000 Subject: 2005-06-13 Ross Burton . * glib/dbus-gobject.c: Handle errors on message demarshalling by sending error message back. * glib/dbus-gvalue.c: Initialize return variables. --- ChangeLog | 6 ++++++ glib/dbus-gobject.c | 11 ++++++++--- glib/dbus-gvalue.c | 8 ++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index da920312..a998853e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-06-13 Ross Burton . + + * glib/dbus-gobject.c: Handle errors on message + demarshalling by sending error message back. + * glib/dbus-gvalue.c: Initialize return variables. + 2005-06-13 Colin Walters * glib/Makefile.am: Fix thinko in last patch. diff --git a/glib/dbus-gobject.c b/glib/dbus-gobject.c index e2645f41..311f6b54 100644 --- a/glib/dbus-gobject.c +++ b/glib/dbus-gobject.c @@ -772,7 +772,8 @@ invoke_object_method (GObject *object, guint n_params; const GType *types; DBusGValueMarshalCtx context; - + GError *error = NULL; + context.gconnection = DBUS_G_CONNECTION_FROM_CONNECTION (connection); context.proxy = NULL; @@ -780,12 +781,16 @@ invoke_object_method (GObject *object, n_params = types_array->len; types = (const GType*) types_array->data; - value_array = dbus_gvalue_demarshal_message (&context, message, n_params, types, NULL); + value_array = dbus_gvalue_demarshal_message (&context, message, n_params, types, &error); if (value_array == NULL) { g_free (in_signature); g_array_free (types_array, TRUE); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + reply = dbus_message_new_error (message, "org.freedesktop.DBus.GLib.ErrorError", error->message); + dbus_connection_send (connection, reply, NULL); + dbus_message_unref (reply); + g_error_free (error); + return DBUS_HANDLER_RESULT_HANDLED; } g_array_free (types_array, TRUE); } diff --git a/glib/dbus-gvalue.c b/glib/dbus-gvalue.c index 8506330d..4eb2803d 100644 --- a/glib/dbus-gvalue.c +++ b/glib/dbus-gvalue.c @@ -1300,7 +1300,7 @@ marshal_strv (DBusMessageIter *iter, DBusMessageIter subiter; char **array; char **elt; - gboolean ret; + gboolean ret = FALSE; g_assert (G_VALUE_TYPE (value) == g_strv_get_type ()); @@ -1336,7 +1336,7 @@ marshal_garray_basic (DBusMessageIter *iter, GArray *array; guint elt_size; const char *subsignature_str; - gboolean ret; + gboolean ret = FALSE; elt_gtype = dbus_g_type_get_collection_specialization (G_VALUE_TYPE (value)); /* FIXME - this means we can't send an array of DBusGValue right now... */ @@ -1417,7 +1417,7 @@ marshal_proxy_array (DBusMessageIter *iter, DBusMessageIter subiter; GPtrArray *array; const char *subsignature_str; - gboolean ret; + gboolean ret = FALSE; guint i; subsignature_str = dbus_gtype_to_signature (DBUS_TYPE_G_PROXY); @@ -1553,7 +1553,7 @@ marshal_variant (DBusMessageIter *iter, DBusMessageIter subiter; char *variant_sig; GValue *real_value; - gboolean ret; + gboolean ret = FALSE; real_value = g_value_get_boxed (value); value_gtype = G_VALUE_TYPE (real_value); -- cgit