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.
This commit is contained in:
Colin Walters 2005-06-13 15:36:31 +00:00
parent b539abf9ce
commit 9548df2ce9
3 changed files with 18 additions and 7 deletions

View file

@ -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.

View 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);
}

View 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);