[maemo-commits] [maemo-commits] r17315 - in projects/haf/trunk/dbus-glib/debian: . patches

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Jan 28 20:19:46 EET 2009
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


More information about the maemo-commits mailing list