pathbar: Fail setting the path on cancellation
authorOlivier Crête <olivier.crete@collabora.com>
Wed, 17 May 2023 00:08:34 +0000 (01:08 +0100)
committerOlivier Crête <olivier.crete@collabora.com>
Wed, 17 May 2023 00:10:23 +0000 (01:10 +0100)
The cancellation path already clears the GCancellable, if we let it
continue, it causes a later assertion, so just exit early in this case
and hope a new path has been set.

Fixes: #5792
gtk/gtkpathbar.c

index e8a3b2fc0629baafd891f6b8899c67d387b02e6d..d712bec277d67e127748540a132c91398cccfe8e 100644 (file)
@@ -873,8 +873,18 @@ gtk_path_bar_get_mount_callback (GObject      *source,
 {
   GFile *file = G_FILE (source);
   struct SetFileInfo *file_info = data;
+  GError *error = NULL;
 
-  file_info->mount = g_file_find_enclosing_mount_finish (file, result, NULL);
+  file_info->mount = g_file_find_enclosing_mount_finish (file, result,
+                                                        &error);
+
+  if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+    {
+      gtk_path_bar_set_file_finish (file_info, FALSE);
+      g_clear_error (&error);
+      return;
+    }
+  g_clear_error (&error);
 
   if (file_info->mount)
     file_info->root_file = g_mount_get_root (file_info->mount);