diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2020-03-28 23:33:17 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-28 23:33:17 +0300 |
commit | fafb0ba06df9417a22bd8deb31a61feeb24de794 (patch) | |
tree | f1d59ea4ef51fe9d174376b776bdd9f210f3e2cf /servers/rendering/shader_language.cpp | |
parent | fc5e1d03447d658c9f0696eafd95eb596b32e27c (diff) | |
parent | aa33db056a6f3fed2eab6092f23db7caaddb1cfc (diff) | |
download | redot-engine-fafb0ba06df9417a22bd8deb31a61feeb24de794.tar.gz |
Merge pull request #37313 from Chaosus/shader_fix_for
Prevent shader crash if multiple variables has been declared in 'for'
Diffstat (limited to 'servers/rendering/shader_language.cpp')
-rw-r--r-- | servers/rendering/shader_language.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index cf2a01c07c..300c38db22 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -5070,6 +5070,10 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui p_block->variables[name] = var; if (tk.type == TK_COMMA) { + if (p_block->block_type == BlockNode::BLOCK_TYPE_FOR) { + _set_error("Multiple declarations in 'for' loop are not implemented yet."); + return ERR_PARSE_ERROR; + } tk = _get_token(); //another variable } else if (tk.type == TK_SEMICOLON) { @@ -5394,6 +5398,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui cf->flow_op = FLOW_OP_FOR; BlockNode *init_block = alloc_node<BlockNode>(); + init_block->block_type = BlockNode::BLOCK_TYPE_FOR; init_block->parent_block = p_block; init_block->single_statement = true; cf->blocks.push_back(init_block); |