summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Benítez León <nbenitezl@gmail.com>2025-06-14 21:38:47 +0100
committerNelson Benítez León <nbenitezl@gmail.com>2025-06-14 21:52:02 +0100
commit070cb32b91fc7ce147ef5d969995a03190b009e8 (patch)
tree70f76529dd1ed4b52efa5d0e091362f5f6be0b7d
parent8a9bade19e09d9debbf32d2a78fe1fc71476d96a (diff)
NautilusFilesView: fix crash when fast changing foldersfix_crash_fast_alt_browsing
The assertion in metadata_for_files_in_directory_ready_callback() and in metadata_for_directory_as_file_ready_callback() (both async called from load_directory()) can happen when fast changing folders with Alt+{Left|Right|Up|Down} as shown in issue #3855 so let's change those assertions to 'if' clauses that would do nothing when not met. Fixes #3855
-rw-r--r--src/nautilus-files-view.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 4e14dd4b4..2f8a96469 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -9044,12 +9044,11 @@ metadata_for_directory_as_file_ready_callback (NautilusFile *file,
g_assert (NAUTILUS_IS_FILES_VIEW (view));
priv = nautilus_files_view_get_instance_private (view);
- g_assert (priv->directory_as_file == file);
- g_assert (priv->metadata_for_directory_as_file_pending);
-
- priv->metadata_for_directory_as_file_pending = FALSE;
-
- finish_loading_if_all_metadata_loaded (view);
+ if (priv->directory_as_file == file && priv->metadata_for_directory_as_file_pending)
+ {
+ priv->metadata_for_directory_as_file_pending = FALSE;
+ finish_loading_if_all_metadata_loaded (view);
+ }
}
static void
@@ -9064,12 +9063,11 @@ metadata_for_files_in_directory_ready_callback (NautilusDirectory *directory,
g_assert (NAUTILUS_IS_FILES_VIEW (view));
priv = nautilus_files_view_get_instance_private (view);
- g_assert (priv->directory == directory);
- g_assert (priv->metadata_for_files_in_directory_pending);
-
- priv->metadata_for_files_in_directory_pending = FALSE;
-
- finish_loading_if_all_metadata_loaded (view);
+ if (priv->directory == directory && priv->metadata_for_files_in_directory_pending)
+ {
+ priv->metadata_for_files_in_directory_pending = FALSE;
+ finish_loading_if_all_metadata_loaded (view);
+ }
}
static void