From 6286f9d21d4c7604ae0fd91e49896da79f0b78f7 Mon Sep 17 00:00:00 2001 From: Danil Alexeev Date: Thu, 3 Oct 2024 17:14:44 +0300 Subject: [PATCH] GDScript: Fix `GDScriptCache::get_full_script()` uses non-remapped path --- modules/gdscript/gdscript_cache.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/gdscript/gdscript_cache.cpp b/modules/gdscript/gdscript_cache.cpp index b3c0744bdf2..3c022412bdc 100644 --- a/modules/gdscript/gdscript_cache.cpp +++ b/modules/gdscript/gdscript_cache.cpp @@ -297,6 +297,7 @@ Vector GDScriptCache::get_binary_tokens(const String &p_path) { Ref GDScriptCache::get_shallow_script(const String &p_path, Error &r_error, const String &p_owner) { MutexLock lock(singleton->mutex); + if (!p_owner.is_empty()) { singleton->dependencies[p_owner].insert(p_path); } @@ -307,7 +308,7 @@ Ref GDScriptCache::get_shallow_script(const String &p_path, Error &r_e return singleton->shallow_gdscript_cache[p_path]; } - String remapped_path = ResourceLoader::path_remap(p_path); + const String remapped_path = ResourceLoader::path_remap(p_path); Ref script; script.instantiate(); @@ -332,6 +333,7 @@ Ref GDScriptCache::get_shallow_script(const String &p_path, Error &r_e } singleton->shallow_gdscript_cache[p_path] = script; + return script; } @@ -359,16 +361,18 @@ Ref GDScriptCache::get_full_script(const String &p_path, Error &r_erro } } + const String remapped_path = ResourceLoader::path_remap(p_path); + if (p_update_from_disk) { - if (p_path.get_extension().to_lower() == "gdc") { - Vector buffer = get_binary_tokens(p_path); + if (remapped_path.get_extension().to_lower() == "gdc") { + Vector buffer = get_binary_tokens(remapped_path); if (buffer.is_empty()) { r_error = ERR_FILE_CANT_READ; return script; } script->set_binary_tokens_source(buffer); } else { - r_error = script->load_source_code(p_path); + r_error = script->load_source_code(remapped_path); if (r_error) { return script; }