summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-07-08 14:39:34 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-07-08 14:39:34 -0400
commitb2daadd08d674b19196f8aa5d7a9917bf7e26e5f (patch)
treebfcc4f27c38a0c653dd33945b991f6708a53d7de
parent02ff6705220a984d5382518033a4627eed710f2f (diff)
downloadgnome-initial-setup-b2daadd08d674b19196f8aa5d7a9917bf7e26e5f.tar.gz
network: Avoid a crash on locale change
We were not careful enough in managing our timeout. Sometimes, an old timeout could stick around, and then access disposed objects later on, leading to crash. https://bugzilla.gnome.org/show_bug.cgi?id=752134
-rw-r--r--gnome-initial-setup/pages/network/gis-network-page.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gnome-initial-setup/pages/network/gis-network-page.c b/gnome-initial-setup/pages/network/gis-network-page.c
index 168be4e..d0c2b96 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.c
+++ b/gnome-initial-setup/pages/network/gis-network-page.c
@@ -326,10 +326,8 @@ refresh_again (gpointer user_data)
GisNetworkPage *page = GIS_NETWORK_PAGE (user_data);
GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
- priv->refresh_timeout_id = 0;
-
refresh_wireless_list (page);
- return FALSE;
+ return G_SOURCE_REMOVE;
}
static void
@@ -347,6 +345,12 @@ refresh_wireless_list (GisNetworkPage *page)
g_assert (NM_IS_DEVICE_WIFI (priv->nm_device));
+ if (priv->refresh_timeout_id != 0)
+ {
+ g_source_remove (priv->refresh_timeout_id);
+ priv->refresh_timeout_id = 0;
+ }
+
active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (priv->nm_device));
children = gtk_container_get_children (GTK_CONTAINER (priv->network_list));