Browse Source

Fix editor crash if passing index as variable to function parameter

Yuri Roubinsky 4 years ago
parent
commit
c082982a47
1 changed files with 6 additions and 4 deletions
  1. 6 4
      servers/rendering/shader_language.cpp

+ 6 - 4
servers/rendering/shader_language.cpp

@@ -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_constant >= (uint32_t)expr->get_array_size()) {
-						_set_error(vformat("Index [%s] out of range [%s..%s]", index_constant, 0, expr->get_array_size() - 1));
-						return nullptr;
+					if (index->type == Node::TYPE_CONSTANT) {
+						uint32_t index_constant = static_cast<ConstantNode *>(index)->values[0].uint;
+						if (index_constant >= (uint32_t)expr->get_array_size()) {
+							_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) {