[gvfs/gnome-3-22] network: Disconnect all signal handlers in finalize



commit b18510d940abbcc77f3c4cf6da90ed3eead61b06
Author: Ondrej Holy <oholy redhat com>
Date:   Thu Nov 3 14:49:20 2016 +0100

    network: Disconnect all signal handlers in finalize
    
    Not all signal handlers has been removed in finalize by commit 45c4dcc.
    Disconnect rest of the signal handlers in order to avoid potential
    crashes...
    
    https://bugzilla.gnome.org/show_bug.cgi?id=712235

 daemon/gvfsbackendnetwork.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gvfsbackendnetwork.c b/daemon/gvfsbackendnetwork.c
index 068ccb2..193fa32 100644
--- a/daemon/gvfsbackendnetwork.c
+++ b/daemon/gvfsbackendnetwork.c
@@ -958,9 +958,15 @@ g_vfs_backend_network_finalize (GObject *object)
   g_object_unref (backend->workgroup_symbolic_icon);
   g_object_unref (backend->server_symbolic_icon);
   if (backend->smb_settings)
-    g_object_unref (backend->smb_settings);
+    {
+      g_signal_handlers_disconnect_by_func (backend->smb_settings, smb_settings_change_event_cb, backend);
+      g_clear_object (&backend->smb_settings);
+    }
   if (backend->dnssd_settings)
-    g_object_unref (backend->dnssd_settings);
+    {
+      g_signal_handlers_disconnect_by_func (backend->dnssd_settings, dnssd_settings_change_event_cb, 
backend);
+      g_clear_object (&backend->dnssd_settings);
+    }
   if (backend->dnssd_monitor)
     {
       g_signal_handlers_disconnect_by_func (backend->dnssd_monitor, notify_dnssd_local_changed, backend);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]