diff options
| author | Colin Walters <walters@verbum.org> | 2005-06-13 15:36:31 +0000 | 
|---|---|---|
| committer | Colin Walters <walters@verbum.org> | 2005-06-13 15:36:31 +0000 | 
| commit | 9548df2ce95cee1942f615b6f2abf0029e680f5a (patch) | |
| tree | 2c8bc5649df4ab3d6269f3ff8f45fef85e75b876 | |
| parent | b539abf9ce1bdc5c55a15ec6670dfe176e2c55ba (diff) | |
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.
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | glib/dbus-gobject.c | 11 | ||||
| -rw-r--r-- | glib/dbus-gvalue.c | 8 | 
3 files changed, 18 insertions, 7 deletions
@@ -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. 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);  | 
