Browse Source

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.
Kai 1 year ago
parent
commit
f4192aad6f
1 changed files with 3 additions and 0 deletions
  1. 3 0
      modules/gdscript/gdscript_compiler.cpp

+ 3 - 0
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);
 	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];
 	int native_idx = GDScriptLanguage::get_singleton()->get_global_map()[base_type.native_type];
+
 	p_script->native = GDScriptLanguage::get_singleton()->get_global_array()[native_idx];
 	p_script->native = GDScriptLanguage::get_singleton()->get_global_array()[native_idx];
 	ERR_FAIL_COND_V(p_script->native.is_null(), ERR_BUG);
 	ERR_FAIL_COND_V(p_script->native.is_null(), ERR_BUG);