diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-06-06 14:59:52 +0300 |
---|---|---|
committer | Yuri Roubinsky <chaosus89@gmail.com> | 2021-06-06 14:59:52 +0300 |
commit | eec82d9f75395f86ac77d61c69d1066283e0554b (patch) | |
tree | 4cd7a8b6d355b99e4ccb11fc1c28afb8b366817b /servers | |
parent | aa251c310a5b9cab45fa6c27ecf1694da42b00ea (diff) |
Prevent shader crash when returning array when return type is scalar
Diffstat (limited to 'servers')
-rw-r--r-- | servers/rendering/shader_language.cpp | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index f485d79fb0..8ed774f8e7 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -6375,13 +6375,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun } pass_array = false; - bool array_size_incorrect = false; - - if (b->parent_function->return_array_size > 0 && b->parent_function->return_array_size != expr->get_array_size()) { - array_size_incorrect = true; - } - - if (b->parent_function->return_type != expr->get_datatype() || array_size_incorrect || return_struct_name != expr->get_datatype_name()) { + if (b->parent_function->return_type != expr->get_datatype() || b->parent_function->return_array_size != expr->get_array_size() || return_struct_name != expr->get_datatype_name()) { _set_error("Expected return with an expression of type '" + (return_struct_name != "" ? return_struct_name : get_datatype_name(b->parent_function->return_type)) + array_size_string + "'"); return ERR_PARSE_ERROR; } |