summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDavid Sichma <sichmada@gmail.com>2021-03-12 15:04:45 +0100
committerDavid Sichma <sichmada@gmail.com>2021-03-12 15:04:45 +0100
commit762bb5843b72d5921a02484bdb850c28fe6e48a9 (patch)
tree41eea4ae14160e63d7f1bc52c7ab637e47d973fe /modules
parentadf233ed0436a0564db7682b4ce0931656d4c392 (diff)
Fixed match test expression for temporaries
Fixed that a potentially popped temporary was used for the value in match statements.
Diffstat (limited to 'modules')
-rw-r--r--modules/gdscript/gdscript_compiler.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 06d628d23f..765b9058f1 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -1511,17 +1511,17 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Sui
codegen.start_block();
// Evaluate the match expression.
- GDScriptCodeGenerator::Address value_local = codegen.add_local("@match_value", _gdtype_from_datatype(match->test->get_datatype()));
- GDScriptCodeGenerator::Address value = _parse_expression(codegen, error, match->test);
+ GDScriptCodeGenerator::Address value = codegen.add_local("@match_value", _gdtype_from_datatype(match->test->get_datatype()));
+ GDScriptCodeGenerator::Address value_expr = _parse_expression(codegen, error, match->test);
if (error) {
return error;
}
// Assign to local.
// TODO: This can be improved by passing the target to parse_expression().
- gen->write_assign(value_local, value);
+ gen->write_assign(value, value_expr);
- if (value.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
+ if (value_expr.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
codegen.generator->pop_temporary();
}