diff options
author | Thomas Haller <thaller@redhat.com> | 2018-08-28 13:35:47 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-09-05 11:41:40 +0200 |
commit | 887e248d707178046dc1db66503ffd616a719011 (patch) | |
tree | 1da195d32954eed9b2bf7a7739d7553adbf47253 | |
parent | 05d60401d981ddf9cc7822f4611bb43a7ac4a06d (diff) | |
download | NetworkManager-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.c | 8 |
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); |