diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-12-14 18:44:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 18:44:17 +0100 |
commit | 4601809c5a14ae0e5ca8469bc191121ed36fd281 (patch) | |
tree | 5fa8a1087f8986651b9ca6f609c1b936695f0fb3 | |
parent | 965a527775359f4b0c868805ad1876bf87ac2857 (diff) | |
parent | ab8119b5f6f07a3b16725e436023514d93b96a29 (diff) |
Merge pull request #55931 from groud/avoid_crash_gdscript_analyzer
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index f116f430e6..7b64c0564e 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -484,7 +484,7 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type result = parser->head->get_datatype(); } else { Ref<GDScriptParserRef> ref = get_parser_for(ScriptServer::get_global_class_path(first)); - if (ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED) != OK) { + if (!ref.is_valid() || ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED) != OK) { push_error(vformat(R"(Could not parse global class "%s" from "%s".)", first, ScriptServer::get_global_class_path(first)), p_type); return GDScriptParser::DataType(); } @@ -3956,7 +3956,9 @@ Ref<GDScriptParserRef> GDScriptAnalyzer::get_parser_for(const String &p_path) { } else { Error err = OK; ref = GDScriptCache::get_parser(p_path, GDScriptParserRef::EMPTY, err, parser->script_path); - depended_parsers[p_path] = ref; + if (ref.is_valid()) { + depended_parsers[p_path] = ref; + } } return ref; |