[gvfs] network: Disconnect all signal handlers in finalize



commit ae33e475d0bbd717a9422790d8dc607469d2708d
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 92164e3..bbda0bb 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]