Fix crash in Create New Node dialog with certain user-created scripts

This commit is contained in:
Haoyu Qiu 2022-02-19 13:14:33 +08:00
parent c944c9e572
commit 639c4b6f20
1 changed files with 11 additions and 11 deletions

View File

@ -235,19 +235,19 @@ void CreateDialog::_add_type(const String &p_type, const TypeCategory p_type_cat
}
} else {
if (ScriptServer::is_global_class(p_type)) {
inherits = EditorNode::get_editor_data().script_class_get_base(p_type);
if (inherits.is_empty()) {
Ref<Script> script = EditorNode::get_editor_data().script_class_load_script(p_type);
ERR_FAIL_COND(script.is_null());
Ref<Script> script = EditorNode::get_editor_data().script_class_load_script(p_type);
ERR_FAIL_COND(script.is_null());
Ref<Script> base = script->get_base_script();
if (base.is_null()) {
String extends;
script->get_language()->get_global_class_name(script->get_path(), &extends);
Ref<Script> base = script->get_base_script();
if (base.is_null()) {
String extends;
script->get_language()->get_global_class_name(script->get_path(), &extends);
inherits = extends;
inherited_type = TypeCategory::CPP_TYPE;
} else {
inherits = extends;
inherited_type = TypeCategory::CPP_TYPE;
} else {
inherits = script->get_language()->get_global_class_name(base->get_path());
if (inherits.is_empty()) {
inherits = base->get_path();
inherited_type = TypeCategory::PATH_TYPE;
}