Merge pull request #50895 from Chaosus/fix_shader_crash

Fix editor crash if passing index as variable to function parameter
This commit is contained in:
Rémi Verschelde 2021-07-26 17:38:14 +02:00 committed by GitHub
commit fef27e9b5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 4 deletions

View File

@ -4796,10 +4796,12 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
String member_struct_name; String member_struct_name;
if (expr->get_array_size() > 0) { if (expr->get_array_size() > 0) {
uint32_t index_constant = static_cast<ConstantNode *>(index)->values[0].uint; if (index->type == Node::TYPE_CONSTANT) {
if (index_constant >= (uint32_t)expr->get_array_size()) { uint32_t index_constant = static_cast<ConstantNode *>(index)->values[0].uint;
_set_error(vformat("Index [%s] out of range [%s..%s]", index_constant, 0, expr->get_array_size() - 1)); if (index_constant >= (uint32_t)expr->get_array_size()) {
return nullptr; _set_error(vformat("Index [%s] out of range [%s..%s]", index_constant, 0, expr->get_array_size() - 1));
return nullptr;
}
} }
member_type = expr->get_datatype(); member_type = expr->get_datatype();
if (member_type == TYPE_STRUCT) { if (member_type == TYPE_STRUCT) {