diff --git a/source/blender/editors/space_file/filelist.cc b/source/blender/editors/space_file/filelist.cc index c6572b1301a..14000045641 100644 --- a/source/blender/editors/space_file/filelist.cc +++ b/source/blender/editors/space_file/filelist.cc @@ -1500,7 +1500,9 @@ static int filelist_intern_free_main_files(FileList *filelist) removed_counter++; } - MEM_SAFE_FREE(filelist_intern->filtered); + if (removed_counter > 0) { + MEM_SAFE_FREE(filelist_intern->filtered); + } return removed_counter; } @@ -1916,6 +1918,11 @@ static void filelist_clear_main_files(FileList *filelist, if (filelist->filelist.entries_num == FILEDIR_NBR_ENTRIES_UNSET) { return; } + const int removed_files = filelist_intern_free_main_files(filelist); + /* File list contains no main files to clear. */ + if (removed_files == 0) { + return; + } filelist_tag_needs_filtering(filelist); @@ -1923,8 +1930,6 @@ static void filelist_clear_main_files(FileList *filelist, filelist_cache_clear(&filelist->filelist_cache, filelist->filelist_cache.size); } - const int removed_files = filelist_intern_free_main_files(filelist); - filelist->filelist.entries_num -= removed_files; filelist->filelist.entries_filtered_num = FILEDIR_NBR_ENTRIES_UNSET; BLI_assert(filelist->filelist.entries_num > FILEDIR_NBR_ENTRIES_UNSET);