Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2021-11-12 12:50:00 +0300
committerSybren A. Stüvel <sybren@blender.org>2021-11-12 12:51:09 +0300
commit2b633f12adfa759fc81a61e5ec699be29b756267 (patch)
treea076e37caf6c8edf7dfd77d2fd00a1bc2bf69002 /source
parent456876208b16710318a4576b9b7554abc4fa1125 (diff)
Fix crash in asset browser when switching from file browser
When the file browser is in asset browser mode, it sets the callback `filelist->prepare_filter_fn` to an asset browser specific function. This function will segfault if there is no current asset library. Switching back from asset browser to file browser would not reset that callback to `NULL`, causing it to be called and crash Blender. This is now fixed.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_file/filelist.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index a1b1c8cc363..e6575316aec 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -914,6 +914,9 @@ static void prepare_filter_asset_library(const FileList *filelist, FileListFilte
if (!filter->asset_catalog_filter) {
return;
}
+ BLI_assert_msg(filelist->asset_library,
+ "prepare_filter_asset_library() should only be called when the file browser is "
+ "in asset browser mode");
file_ensure_updated_catalog_filter_data(filter->asset_catalog_filter, filelist->asset_library);
}
@@ -1876,11 +1879,13 @@ void filelist_settype(FileList *filelist, short type)
case FILE_MAIN:
filelist->check_dir_fn = filelist_checkdir_main;
filelist->read_job_fn = filelist_readjob_main;
+ filelist->prepare_filter_fn = NULL;
filelist->filter_fn = is_filtered_main;
break;
case FILE_LOADLIB:
filelist->check_dir_fn = filelist_checkdir_lib;
filelist->read_job_fn = filelist_readjob_lib;
+ filelist->prepare_filter_fn = NULL;
filelist->filter_fn = is_filtered_lib;
break;
case FILE_ASSET_LIBRARY:
@@ -1900,6 +1905,7 @@ void filelist_settype(FileList *filelist, short type)
default:
filelist->check_dir_fn = filelist_checkdir_dir;
filelist->read_job_fn = filelist_readjob_dir;
+ filelist->prepare_filter_fn = NULL;
filelist->filter_fn = is_filtered_file;
break;
}