From 8eb9cfe0aa893f058cb44f35e3adf3be912c070c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 28 Jan 2014 22:07:29 +0100 Subject: [PATCH] core/dhcp: fix dispose() of NMDHCPClient to handle multiple invocations Signed-off-by: Thomas Haller --- src/dhcp-manager/nm-dhcp-client.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index b8a9ce30a..c2a760ea3 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -1565,16 +1565,26 @@ dispose (GObject *object) * the DHCP client. */ - if (priv->remove_id) + if (priv->remove_id) { g_source_remove (priv->remove_id); + priv->remove_id = 0; + } - g_hash_table_destroy (priv->options); - g_free (priv->iface); - if (priv->hwaddr) + if (priv->options) { + g_hash_table_destroy (priv->options); + priv->options = NULL; + } + g_clear_pointer (&priv->iface, g_free); + + if (priv->hwaddr) { g_byte_array_free (priv->hwaddr, TRUE); + priv->hwaddr = NULL; + } - if (priv->duid) + if (priv->duid) { g_byte_array_free (priv->duid, TRUE); + priv->duid = NULL; + } G_OBJECT_CLASS (nm_dhcp_client_parent_class)->dispose (object); }