In case this gets lost upstream, please consider adding this to the
debian package.  This is what I ended up sending upstream.






By passing dbus_g_proxy_call an incorrect signature, we can cause
the function to fail but not provide any error message (if
G_DISABLE_ASSERT is defined).  As smvc pointed out, this can also
become a runtime error when a telepathy CM changes signature, but
the client hasn't been updated.  As such, g_assert isn't an appropriate
action.  See http://bugs.debian.org/541632 for more information.

This patch causes it to set an error when demarshalling a type that it's
not expecting.  Instead of a NULL error, one instead
sees something like the following when the method returns a path
object but the client expected a string:

"modem Create() failed: Expected type gchararray, got type code 'o'"

Signed-off-by: Andres Salomon <dilin...@collabora.co.uk>
---
 dbus/dbus-gvalue.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/dbus/dbus-gvalue.c b/dbus/dbus-gvalue.c
index 49ae16e..6ba3663 100644
--- a/dbus/dbus-gvalue.c
+++ b/dbus/dbus-gvalue.c
@@ -585,8 +585,7 @@ demarshal_basic (DBusGValueMarshalCtx      *context,
        return TRUE;
       }
     default:
-      g_assert_not_reached ();
-      return FALSE;
+      /* fall through to invalid_type */
     }
   invalid_type:
     g_set_error (error,
-- 
1.6.3.3




-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to