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.
This commit is contained in:
2021-11-12 10:50:00 +01:00
parent 456876208b
commit 2b633f12ad

View File

@@ -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;
}