]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
2005-06-13 Ross Burton <ross@burtonini.com>.
authorColin Walters <walters@verbum.org>
Mon, 13 Jun 2005 15:36:31 +0000 (15:36 +0000)
committerColin Walters <walters@verbum.org>
Mon, 13 Jun 2005 15:36:31 +0000 (15:36 +0000)
* glib/dbus-gobject.c: Handle errors on message
demarshalling by sending error message back.
* glib/dbus-gvalue.c: Initialize return variables.

ChangeLog
glib/dbus-gobject.c
glib/dbus-gvalue.c

index da920312b1345ac15e5a9024dd905a74ac7df7ab..a998853ed552a6e04e51b99dc54208aaf6e723fb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-13  Ross Burton <ross@burtonini.com>.
+
+       * 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  <walters@verbum.org>
 
        * glib/Makefile.am: Fix thinko in last patch.
index e2645f41c8681adf3d6378ce78522865b4a155c7..311f6b5430241baa44235bab9ad932f47d6b7e93 100644 (file)
@@ -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);
   }
index 8506330d20e26dd354004f3767cd32f9d3076731..4eb2803db519c29a69c087265566baba7db181b6 100644 (file)
@@ -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);