GDScript: Fix crash when base of an attribute is invalid

In attribute expressions (`a.b`) it's possible that the base has an
incorrect syntax and thus become a nullptr expression in the tree. This
commit add the check for this case to fail gracefully instead of
crashing.
This commit is contained in:
George Marques 2021-04-05 11:17:59 -03:00
parent c201b212c7
commit 9ed0f0384c
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
2 changed files with 7 additions and 1 deletions

View file

@ -2065,6 +2065,12 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool is_awa
is_self = true;
} else if (callee_type == GDScriptParser::Node::SUBSCRIPT) {
GDScriptParser::SubscriptNode *subscript = static_cast<GDScriptParser::SubscriptNode *>(p_call->callee);
if (subscript->base == nullptr) {
// Invalid syntax, error already set on parser.
p_call->set_datatype(call_type);
mark_node_unsafe(p_call);
return;
}
if (!subscript->is_attribute) {
// Invalid call. Error already sent in parser.
// TODO: Could check if Callable here.