From f4192aad6f6c46075c598ad9d6773fd919ced7fc Mon Sep 17 00:00:00 2001 From: Kai Date: Tue, 7 May 2024 08:05:23 +0200 Subject: [PATCH] Fix crash when extending taken-over named class Added error handling in `_prepare_compilation()` to address cases where the `base_type` cannot be found, preventing a crash. --- modules/gdscript/gdscript_compiler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index a8a7f3d9f7b8..35f5d0ed54fa 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -2666,7 +2666,10 @@ Error GDScriptCompiler::_prepare_compilation(GDScript *p_script, const GDScriptP GDScriptDataType base_type = _gdtype_from_datatype(p_class->base_type, p_script, false); + ERR_FAIL_COND_V_MSG(base_type.native_type == StringName(), ERR_BUG, vformat(R"(Failed to get base class for "%s")", p_script->path)); + int native_idx = GDScriptLanguage::get_singleton()->get_global_map()[base_type.native_type]; + p_script->native = GDScriptLanguage::get_singleton()->get_global_array()[native_idx]; ERR_FAIL_COND_V(p_script->native.is_null(), ERR_BUG);