summaryrefslogtreecommitdiff
path: root/editor/editor_file_system.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_file_system.cpp')
-rw-r--r--editor/editor_file_system.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 16ecac4dac..644c32e8a4 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -1552,6 +1552,11 @@ void EditorFileSystem::_update_script_classes() {
int index = -1;
EditorFileSystemDirectory *efd = find_file(path, &index);
+ if (!efd || index < 0) {
+ // The file was removed
+ continue;
+ }
+
for (int i = 0; i < ScriptServer::get_language_count(); i++) {
ScriptLanguage *lang = ScriptServer::get_language(i);
if (lang->supports_documentation() && efd->files[index]->type == lang->get_type()) {
@@ -1586,6 +1591,11 @@ void EditorFileSystem::_update_script_classes() {
void EditorFileSystem::_update_pending_script_classes() {
if (!update_script_paths.is_empty()) {
_update_script_classes();
+ } else {
+ // In case the class cache file was removed somehow, regenerate it.
+ if (!FileAccess::exists(ScriptServer::get_global_class_cache_file_path())) {
+ ScriptServer::save_global_classes();
+ }
}
}