diff options
| author | Nelson Benítez León <nbenitezl@gmail.com> | 2025-06-14 21:38:47 +0100 |
|---|---|---|
| committer | Nelson Benítez León <nbenitezl@gmail.com> | 2025-06-14 21:52:02 +0100 |
| commit | 070cb32b91fc7ce147ef5d969995a03190b009e8 (patch) | |
| tree | 70f76529dd1ed4b52efa5d0e091362f5f6be0b7d | |
| parent | 8a9bade19e09d9debbf32d2a78fe1fc71476d96a (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.c | 22 |
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 |
