summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-11-14 19:54:38 +0100
committerLubomir Rintel <lkundrak@v3.sk>2016-11-14 19:55:00 +0100
commit75b5ddaa4af73e9e8d3219d2d1336a02deaf2068 (patch)
tree02e1815c1afcb986bdc364b0e110f237e33698f1
parent27471dc9404bfff7dce3516c15ccbf3941c2a28a (diff)
downloadNetworkManager-75b5ddaa4af73e9e8d3219d2d1336a02deaf2068.tar.gz
libnm/client: unref all the objects on dispose
We created them, if we didn't unreference it they would be leaked.
-rw-r--r--libnm/nm-client.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index 14f0d38a2a..543f0b8726 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -2416,6 +2416,14 @@ dispose (GObject *object)
}
if (priv->object_manager) {
+ GList *objects, *iter;
+
+ /* Unhook the NM objects. */
+ objects = g_dbus_object_manager_get_objects (priv->object_manager);
+ for (iter = objects; iter; iter = iter->next)
+ g_object_set_qdata (G_OBJECT (iter->data), _nm_object_obj_nm_quark (), NULL);
+ g_list_free_full (objects, g_object_unref);
+
g_signal_handlers_disconnect_by_data (priv->object_manager, object);
g_clear_object (&priv->object_manager);
}