summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-08-28 13:35:47 +0200
committerThomas Haller <thaller@redhat.com>2018-09-05 11:41:40 +0200
commit887e248d707178046dc1db66503ffd616a719011 (patch)
tree1da195d32954eed9b2bf7a7739d7553adbf47253
parent05d60401d981ddf9cc7822f4611bb43a7ac4a06d (diff)
downloadNetworkManager-887e248d707178046dc1db66503ffd616a719011.tar.gz
settings: disconnect signals from plugins when destroying NMSettings
Currently we anyway leak everything on shutdown, so this doesn't matter. But to be correct, we must disconnect signal handlers.
-rw-r--r--src/settings/nm-settings.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 1cc64e6cc3..becb4ed1ec 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -1918,6 +1918,7 @@ finalize (GObject *object)
{
NMSettings *self = NM_SETTINGS (object);
NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
+ GSList *iter;
_clear_connections_cached_list (priv);
@@ -1926,7 +1927,12 @@ finalize (GObject *object)
g_slist_free_full (priv->unmanaged_specs, g_free);
g_slist_free_full (priv->unrecognized_specs, g_free);
- g_slist_free_full (priv->plugins, g_object_unref);
+ while ((iter = priv->plugins)) {
+ gs_unref_object NMSettingsPlugin *plugin = iter->data;
+
+ priv->plugins = g_slist_delete_link (priv->plugins, iter);
+ g_signal_handlers_disconnect_by_data (plugin, self);
+ }
g_clear_object (&priv->agent_mgr);