diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-02-11 19:41:10 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-02-11 19:41:10 +0000 |
commit | 9f10f9a5956b554daf4449e93620f7145bb8f941 (patch) | |
tree | 5279b3540f92a43283ec8cb28eafad040ef1d4bc | |
parent | 560e27a3f4fb0e043f51c995141bab11414bd118 (diff) | |
parent | 95d48ac2e81df1f382669e4795cc3a9de151a252 (diff) | |
download | gtk+-9f10f9a5956b554daf4449e93620f7145bb8f941.tar.gz |
Merge branch 'fix-network-places' into 'master'
placesview: Avoid use-after-free
See merge request GNOME/gtk!3186
-rw-r--r-- | gtk/gtkplacesview.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index aec0ddea60..4d26337155 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -986,9 +986,14 @@ network_enumeration_next_files_finished (GObject *source_object, if (error) { - if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - g_warning ("Failed to fetch network locations: %s", error->message); + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + { + g_clear_error (&error); + g_object_unref (view); + return; + } + g_warning ("Failed to fetch network locations: %s", error->message); g_clear_error (&error); } else @@ -999,16 +1004,11 @@ network_enumeration_next_files_finished (GObject *source_object, g_list_free_full (detected_networks, g_object_unref); } - g_object_unref (view); + update_network_state (view); + monitor_network (view); + update_loading (view); - /* avoid to update widgets if we are already destroyed - (and got cancelled s a result of that) */ - if (!view->destroyed) - { - update_network_state (view); - monitor_network (view); - update_loading (view); - } + g_object_unref (view); } static void |