浏览代码

GDScript compiler: check if subclass exists before comparison

Otherwise these checks might trigger the insertion of an empty value,
leading to crashes.
George Marques 6 年之前
父节点
当前提交
30f02dd421
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      modules/gdscript/gdscript_compiler.cpp

+ 2 - 2
modules/gdscript/gdscript_compiler.cpp

@@ -486,7 +486,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
 						script = codegen.script;
 					} else {
 						StringName name = cn->cast_type.class_type->name;
-						if (class_map[name] == codegen.script->subclasses[name]) {
+						if (codegen.script->subclasses.has(name) && class_map[name] == codegen.script->subclasses[name]) {
 							idx = codegen.get_name_map_pos(name);
 							idx |= GDScriptFunction::ADDR_TYPE_CLASS_CONSTANT << GDScriptFunction::ADDR_BITS;
 						} else {
@@ -1183,7 +1183,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
 										script = codegen.script;
 									} else {
 										StringName name = assign_type.class_type->name;
-										if (class_map[name] == codegen.script->subclasses[name]) {
+										if (codegen.script->subclasses.has(name) && class_map[name] == codegen.script->subclasses[name]) {
 											idx = codegen.get_name_map_pos(name);
 											idx |= GDScriptFunction::ADDR_TYPE_CLASS_CONSTANT << GDScriptFunction::ADDR_BITS;
 										} else {