aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2012-02-21 11:22:40 -0600
committerCharles Kerr <charles.kerr@canonical.com>2012-02-21 11:22:40 -0600
commite884478843aaf00a05c325da5766f44cdf67c26a (patch)
tree8c0d6afcd4fa1cd251397b4a2e73ed7c8997f2e7 /src
parentbd74119fe73c955a458b414b12ac92d580a15344 (diff)
downloadayatana-indicator-sound-e884478843aaf00a05c325da5766f44cdf67c26a.tar.gz
ayatana-indicator-sound-e884478843aaf00a05c325da5766f44cdf67c26a.tar.bz2
ayatana-indicator-sound-e884478843aaf00a05c325da5766f44cdf67c26a.zip
Fix LP Bug #937461
Coverity is complaining that we don't check the return value of g_dbus_connection_register_object(). IMO this is harmless, but is fixed here by remembering the returned registration_id and using it to unregister the object in our object's dispose() function.
Diffstat (limited to 'src')
-rw-r--r--src/sound-service-dbus.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c
index 5650002..07d3d6f 100644
--- a/src/sound-service-dbus.c
+++ b/src/sound-service-dbus.c
@@ -58,6 +58,7 @@ struct _SoundServiceDbusPrivate {
DbusmenuMenuitem* root_menuitem;
Device* device;
gboolean greeter_mode;
+ guint registration_id;
};
enum {
@@ -155,18 +156,18 @@ sound_service_dbus_init (SoundServiceDbus *self)
return;
}
/* register the service on it */
- g_dbus_connection_register_object (priv->connection,
- INDICATOR_SOUND_SERVICE_DBUS_OBJECT_PATH,
- interface_info,
- &interface_table,
- self,
- NULL,
- &error);
- if (error != NULL) {
- g_error("Unable to register the object to DBus: %s", error->message);
- g_error_free(error);
- return;
- }
+ priv->registration_id = g_dbus_connection_register_object (priv->connection,
+ INDICATOR_SOUND_SERVICE_DBUS_OBJECT_PATH,
+ interface_info,
+ &interface_table,
+ self,
+ NULL,
+ &error);
+ if (error != NULL) {
+ g_error("Unable to register the object to DBus: %s", error->message);
+ g_error_free(error);
+ return;
+ }
}
DbusmenuMenuitem*
@@ -239,6 +240,15 @@ show_sound_settings_dialog (DbusmenuMenuitem *mi,
static void
sound_service_dbus_dispose (GObject *object)
{
+ SoundServiceDbusPrivate *priv = SOUND_SERVICE_DBUS_GET_PRIVATE (object);
+
+ if (priv->connection && priv->registration_id) {
+ g_dbus_connection_unregister_object (priv->connection, priv->registration_id);
+ priv->registration_id = 0;
+ }
+
+ g_clear_object(&priv->connection);
+
G_OBJECT_CLASS (sound_service_dbus_parent_class)->dispose (object);
//TODO dispose of the active sink instance !
return;