From 004edecc81f253238ef64a730e6ff0805863c359 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 19 Jan 2016 14:30:12 +0100 Subject: [PATCH] wifi/supplicant: take object reference during availability_changed() If the list is expected to be modified, it also means that possibly instances will be unrefed. Probably, not yet visited instances will not be unrefed so there is no real problem. Just be extra cautious and take a reference to all instances first. --- src/supplicant-manager/nm-supplicant-manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/supplicant-manager/nm-supplicant-manager.c b/src/supplicant-manager/nm-supplicant-manager.c index 29c0cd4229..5a1e46563a 100644 --- a/src/supplicant-manager/nm-supplicant-manager.c +++ b/src/supplicant-manager/nm-supplicant-manager.c @@ -198,9 +198,11 @@ availability_changed (NMSupplicantManager *self, gboolean available) /* priv->ifaces may be modified if availability changes; can't use GHashTableIter */ ifaces = g_hash_table_get_values (priv->ifaces); + for (iter = ifaces; iter; iter = iter->next) + g_object_ref (iter->data); for (iter = ifaces; iter; iter = iter->next) nm_supplicant_interface_set_supplicant_available (NM_SUPPLICANT_INTERFACE (iter->data), available); - g_list_free (ifaces); + g_list_free_full (ifaces, g_object_unref); } static gboolean