From a369923d03dd71e7e92a47e8d9b61aa0696ddebd Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sun, 8 Feb 2015 10:07:11 +0100 Subject: [PATCH] device: refactor dispose/cleanup of NMDevice to free members in finalize NMTestDevice does not invoke dispose(), hence it leaks memory which causes false warnings in testing. Some minor refactring to let dispose() clear the fields, but free it later in finalize(). This avoids memleaks in the NMTestDevice stub. (cherry picked from commit a82d94a64e9929fb2228de0e27ee3f3efbf82043) --- src/devices/nm-device.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 884e81420b..d7c830f038 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -8356,7 +8356,7 @@ dispose (GObject *object) _cleanup_generic_post (self, FALSE); - g_clear_pointer (&priv->ip6_saved_properties, g_hash_table_unref); + g_hash_table_remove_all (priv->ip6_saved_properties); if (priv->recheck_assume_id) { g_source_remove (priv->recheck_assume_id); @@ -8372,8 +8372,7 @@ dispose (GObject *object) priv->con_provider = NULL; } - g_hash_table_unref (priv->available_connections); - priv->available_connections = NULL; + g_hash_table_remove_all (priv->available_connections); if (priv->carrier_wait_id) { g_source_remove (priv->carrier_wait_id); @@ -8410,6 +8409,9 @@ finalize (GObject *object) g_free (priv->type_desc); g_free (priv->dhcp_anycast_address); + g_hash_table_unref (priv->ip6_saved_properties); + g_hash_table_unref (priv->available_connections); + G_OBJECT_CLASS (nm_device_parent_class)->finalize (object); }