summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--udisks/udisksclient.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/udisks/udisksclient.c b/udisks/udisksclient.c
index 0507796..0f2d7b2 100644
--- a/udisks/udisksclient.c
+++ b/udisks/udisksclient.c
@@ -133,22 +133,26 @@ udisks_client_finalize (GObject *object)
if (client->initialization_error != NULL)
g_error_free (client->initialization_error);
- g_signal_handlers_disconnect_by_func (client->object_manager,
- G_CALLBACK (on_object_added),
- client);
- g_signal_handlers_disconnect_by_func (client->object_manager,
- G_CALLBACK (on_object_removed),
- client);
- g_signal_handlers_disconnect_by_func (client->object_manager,
- G_CALLBACK (on_interface_added),
- client);
- g_signal_handlers_disconnect_by_func (client->object_manager,
- G_CALLBACK (on_interface_removed),
- client);
- g_signal_handlers_disconnect_by_func (client->object_manager,
- G_CALLBACK (on_interface_proxy_properties_changed),
- client);
- g_object_unref (client->object_manager);
+ /* might be NULL if failing early in the constructor */
+ if (client->object_manager != NULL)
+ {
+ g_signal_handlers_disconnect_by_func (client->object_manager,
+ G_CALLBACK (on_object_added),
+ client);
+ g_signal_handlers_disconnect_by_func (client->object_manager,
+ G_CALLBACK (on_object_removed),
+ client);
+ g_signal_handlers_disconnect_by_func (client->object_manager,
+ G_CALLBACK (on_interface_added),
+ client);
+ g_signal_handlers_disconnect_by_func (client->object_manager,
+ G_CALLBACK (on_interface_removed),
+ client);
+ g_signal_handlers_disconnect_by_func (client->object_manager,
+ G_CALLBACK (on_interface_proxy_properties_changed),
+ client);
+ g_object_unref (client->object_manager);
+ }
if (client->context != NULL)
g_main_context_unref (client->context);