diff options
author | Havoc Pennington <hp@redhat.com> | 2003-04-09 20:31:21 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-04-09 20:31:21 +0000 |
commit | 1708094c0e00ab433bb0a51981f8b77d24aee256 (patch) | |
tree | e30c5ca0f6011bb3f1a083b8a9b49ee778da0cbd /dbus/dbus-bus.c | |
parent | 0e1945b3889f8be8e31e39ad2b982c8a192be41d (diff) |
2003-04-09 Havoc Pennington <hp@redhat.com>
* dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
a memory leak
* bus/dispatch.c (check_service_activated): fix bug in test
* dbus/dbus-mainloop.c (check_timeout): fix this up
* dbus/dbus-internals.c (_dbus_verbose_real): include PID in
verbose output so we can sort out output from different processes,
e.g. in the activation case.
Diffstat (limited to 'dbus/dbus-bus.c')
-rw-r--r-- | dbus/dbus-bus.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index 74703866..e7b4c06e 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -428,8 +428,11 @@ dbus_bus_register (DBusConnection *connection, DBusMessage *message, *reply; char *name; BusData *bd; - + dbus_bool_t retval; + _DBUS_ASSERT_ERROR_IS_CLEAR (error); + + retval = FALSE; bd = ensure_bus_data (connection); if (bd == NULL) @@ -461,22 +464,26 @@ dbus_bus_register (DBusConnection *connection, dbus_message_unref (message); if (reply == NULL) - { - _DBUS_ASSERT_ERROR_IS_SET (error); - return FALSE; - } + goto out; + else if (dbus_set_error_from_message (error, reply)) + goto out; + else if (!dbus_message_get_args (reply, error, + DBUS_TYPE_STRING, &name, + 0)) + goto out; + + bd->base_service = name; - if (!dbus_message_get_args (reply, error, - DBUS_TYPE_STRING, &name, - 0)) - { - _DBUS_ASSERT_ERROR_IS_SET (error); - return FALSE; - } + retval = TRUE; + + out: + if (reply) + dbus_message_unref (reply); - bd->base_service = name; + if (!retval) + _DBUS_ASSERT_ERROR_IS_SET (error); - return TRUE; + return retval; } |