diff options
author | George Marques <george@gmarqu.es> | 2021-10-15 15:53:24 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2021-10-15 15:53:24 -0300 |
commit | b0725a3b7dff7a0cac337b9fb2c1fedcf3261dd5 (patch) | |
tree | 38093f1ea7386f07927530f3878028ae443a2891 /modules | |
parent | 342c1bf1e25348232af709edf90d16358b7b62c9 (diff) |
GDScript: Avoid crash if missing setter signature
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 40be5cb324..7ddb9b93b4 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -967,15 +967,17 @@ void GDScriptParser::parse_property_setter(VariableNode *p_variable) { ParameterNode *parameter = alloc_node<ParameterNode>(); parameter->identifier = p_variable->setter_parameter; - function->parameters_indices[parameter->identifier->name] = 0; - function->parameters.push_back(parameter); + if (parameter->identifier != nullptr) { + function->parameters_indices[parameter->identifier->name] = 0; + function->parameters.push_back(parameter); - SuiteNode *body = alloc_node<SuiteNode>(); - body->add_local(parameter, function); + SuiteNode *body = alloc_node<SuiteNode>(); + body->add_local(parameter, function); - function->body = parse_suite("setter declaration", body); + function->body = parse_suite("setter declaration", body); + p_variable->setter = function; + } - p_variable->setter = function; current_function = previous_function; break; } |