[maemo-commits] [maemo-commits] r17315 - in projects/haf/trunk/dbus-glib/debian: . patches
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jan 28 20:19:46 EET 2009
- Previous message: [maemo-commits] r17314 - in projects/haf/trunk/dbus/debian: . patches
- Next message: [maemo-commits] r17316 - in projects/haf/trunk/ke-recv: debian src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: guillem Date: 2009-01-28 20:19:44 +0200 (Wed, 28 Jan 2009) New Revision: 17315 Added: projects/haf/trunk/dbus-glib/debian/patches/99-dbus-error.patch Modified: projects/haf/trunk/dbus-glib/debian/changelog projects/haf/trunk/dbus-glib/debian/patches/series Log: Teach dbus_g_method_return_error about DBUS_GERROR Fixes: NB#95048 Thanks to Simon McVittie <simon.mcvittie at collabora.co.uk>. Modified: projects/haf/trunk/dbus-glib/debian/changelog =================================================================== --- projects/haf/trunk/dbus-glib/debian/changelog 2009-01-28 17:59:35 UTC (rev 17314) +++ projects/haf/trunk/dbus-glib/debian/changelog 2009-01-28 18:19:44 UTC (rev 17315) @@ -1,3 +1,10 @@ +dbus-glib (0.78-0maemo2) UNRELEASED; urgency=low + + * Teach dbus_g_method_return_error about DBUS_GERROR. (Fixes: NB#95048) + Thanks to Simon McVittie <simon.mcvittie at collabora.co.uk>. + + -- Guillem Jover <guillem.jover at nokia.com> Wed, 28 Jan 2009 20:16:43 +0200 + dbus-glib (0.78-0maemo1) unstable; urgency=low * New upstream release. Added: projects/haf/trunk/dbus-glib/debian/patches/99-dbus-error.patch =================================================================== --- projects/haf/trunk/dbus-glib/debian/patches/99-dbus-error.patch 2009-01-28 17:59:35 UTC (rev 17314) +++ projects/haf/trunk/dbus-glib/debian/patches/99-dbus-error.patch 2009-01-28 18:19:44 UTC (rev 17315) @@ -0,0 +1,174 @@ +From 94c1682b5e9e1f1ee04d80e362f6a8d7a2495327 Mon Sep 17 00:00:00 2001 +From: Simon McVittie <simon.mcvittie at collabora.co.uk> +Date: Fri, 28 Nov 2008 16:23:43 +0000 +Subject: [PATCH] Bug 16776: teach dbus_g_method_return_error about DBUS_GERROR + +Code called by dbus_g_method_return_error assumes that errors in the +domain DBUS_GERROR always have the code DBUS_GERROR_REMOTE_EXCEPTION. +This is clearly not true, and it would be nice to be able to raise the +"well-known" D-Bus errors from library user code. +--- + dbus/dbus-gobject.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 files changed, 66 insertions(+), 3 deletions(-) + + test/core/my-object.c | 11 +++++++++++ + test/core/my-object.h | 1 + + test/core/test-dbus-glib.c | 13 +++++++++++++ + test/core/test-service-glib.xml | 3 +++ + 4 files changed, 28 insertions(+), 0 deletions(-) + +diff --git a/dbus/dbus-gobject.c b/dbus/dbus-gobject.c +index b6e72e2..f55e5cc 100644 +--- a/dbus/dbus-gobject.c ++++ b/dbus/dbus-gobject.c +@@ -1019,9 +1019,72 @@ gerror_to_dbus_error_message (const DBusGObjectInfo *object_info, + else + { + if (error->domain == DBUS_GERROR) +- reply = dbus_message_new_error (message, +- dbus_g_error_get_name (error), +- error->message); ++ { ++ const gchar *name = DBUS_ERROR_FAILED; ++ ++ switch (error->code) ++ { ++ case DBUS_GERROR_FAILED: ++ name = DBUS_ERROR_FAILED; ++ break; ++ case DBUS_GERROR_NO_MEMORY: ++ name = DBUS_ERROR_NO_MEMORY; ++ break; ++ case DBUS_GERROR_SERVICE_UNKNOWN: ++ name = DBUS_ERROR_SERVICE_UNKNOWN; ++ break; ++ case DBUS_GERROR_NAME_HAS_NO_OWNER: ++ name = DBUS_ERROR_NAME_HAS_NO_OWNER; ++ break; ++ case DBUS_GERROR_NO_REPLY: ++ name = DBUS_ERROR_NO_REPLY; ++ break; ++ case DBUS_GERROR_IO_ERROR: ++ name = DBUS_ERROR_IO_ERROR; ++ break; ++ case DBUS_GERROR_BAD_ADDRESS: ++ name = DBUS_ERROR_BAD_ADDRESS; ++ break; ++ case DBUS_GERROR_NOT_SUPPORTED: ++ name = DBUS_ERROR_NOT_SUPPORTED; ++ break; ++ case DBUS_GERROR_LIMITS_EXCEEDED: ++ name = DBUS_ERROR_LIMITS_EXCEEDED; ++ break; ++ case DBUS_GERROR_ACCESS_DENIED: ++ name = DBUS_ERROR_ACCESS_DENIED; ++ break; ++ case DBUS_GERROR_AUTH_FAILED: ++ name = DBUS_ERROR_AUTH_FAILED; ++ break; ++ case DBUS_GERROR_NO_SERVER: ++ name = DBUS_ERROR_NO_SERVER; ++ break; ++ case DBUS_GERROR_TIMEOUT: ++ name = DBUS_ERROR_TIMEOUT; ++ break; ++ case DBUS_GERROR_NO_NETWORK: ++ name = DBUS_ERROR_NO_NETWORK; ++ break; ++ case DBUS_GERROR_ADDRESS_IN_USE: ++ name = DBUS_ERROR_ADDRESS_IN_USE; ++ break; ++ case DBUS_GERROR_DISCONNECTED: ++ name = DBUS_ERROR_DISCONNECTED; ++ break; ++ case DBUS_GERROR_INVALID_ARGS: ++ name = DBUS_ERROR_INVALID_ARGS; ++ break; ++ case DBUS_GERROR_FILE_NOT_FOUND: ++ name = DBUS_ERROR_FILE_NOT_FOUND; ++ break; ++ case DBUS_GERROR_REMOTE_EXCEPTION: ++ name = dbus_g_error_get_name (error); ++ break; ++ } ++ ++ reply = dbus_message_new_error (message, name, error->message); ++ } + else + { + char *error_name; +diff --git a/test/core/my-object.c b/test/core/my-object.c +index f508496..0b7c7a7 100644 +--- a/test/core/my-object.c ++++ b/test/core/my-object.c +@@ -224,6 +224,17 @@ my_object_throw_error (MyObject *obj, GError **error) + } + + gboolean ++my_object_throw_not_supported (MyObject *obj, GError **error) ++{ ++ g_set_error (error, ++ DBUS_GERROR, ++ DBUS_GERROR_NOT_SUPPORTED, ++ "%s", ++ "this method always loses"); ++ return FALSE; ++} ++ ++gboolean + my_object_uppercase (MyObject *obj, const char *str, char **ret, GError **error) + { + *ret = g_ascii_strup (str, -1); +diff --git a/test/core/my-object.h b/test/core/my-object.h +index 75f4c46..9605184 100644 +--- a/test/core/my-object.h ++++ b/test/core/my-object.h +@@ -49,6 +49,7 @@ gint32 my_object_increment_retval (MyObject *obj, gint32 x); + gint32 my_object_increment_retval_error (MyObject *obj, gint32 x, GError **error); + + gboolean my_object_throw_error (MyObject *obj, GError **error); ++gboolean my_object_throw_not_supported (MyObject *obj, GError **error); + + gboolean my_object_uppercase (MyObject *obj, const char *str, char **ret, GError **error); + +diff --git a/test/core/test-dbus-glib.c b/test/core/test-dbus-glib.c +index f0d34f8..2cfb1a8 100644 +--- a/test/core/test-dbus-glib.c ++++ b/test/core/test-dbus-glib.c +@@ -599,6 +599,19 @@ main (int argc, char **argv) + g_print ("ThrowError failed (as expected) returned error: %s\n", error->message); + g_clear_error (&error); + ++ g_print ("Calling ThrowNotSupported\n"); ++ if (dbus_g_proxy_call (proxy, "ThrowNotSupported", &error, ++ G_TYPE_INVALID, G_TYPE_INVALID) != FALSE) ++ lose ("ThrowNotSupported call unexpectedly succeeded!"); ++ ++ if (error->domain != DBUS_GERROR || error->code != DBUS_GERROR_NOT_SUPPORTED) ++ lose ("ThrowNotSupported call returned unexpected error: %s #%u: %s", ++ g_quark_to_string (error->domain), error->code, ++ dbus_g_error_get_name (error), error->message); ++ ++ g_print ("ThrowNotSupported correctly returned error: %s\n", error->message); ++ g_clear_error (&error); ++ + g_print ("Calling IncrementRetvalError (for error)\n"); + error = NULL; + v_UINT32_2 = 0; +diff --git a/test/core/test-service-glib.xml b/test/core/test-service-glib.xml +index fca02af..19a6c5c 100644 +--- a/test/core/test-service-glib.xml ++++ b/test/core/test-service-glib.xml +@@ -27,6 +27,9 @@ + <method name="ThrowError"> + </method> + ++ <method name="ThrowNotSupported"> ++ </method> ++ + <method name="Uppercase"> + <arg type="s" direction="in" /> + <arg type="s" direction="out" /> +-- +1.5.6.5 + Modified: projects/haf/trunk/dbus-glib/debian/patches/series =================================================================== --- projects/haf/trunk/dbus-glib/debian/patches/series 2009-01-28 17:59:35 UTC (rev 17314) +++ projects/haf/trunk/dbus-glib/debian/patches/series 2009-01-28 18:19:44 UTC (rev 17315) @@ -1,3 +1,4 @@ 01-dbus-gproxy-crash-fix.patch 07-install-doxygen-docs.patch 13-zero-call_id-fix.patch +99-dbus-error.patch
- Previous message: [maemo-commits] r17314 - in projects/haf/trunk/dbus/debian: . patches
- Next message: [maemo-commits] r17316 - in projects/haf/trunk/ke-recv: debian src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]