summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_compiler.cpp
diff options
context:
space:
mode:
authorJulien Nguyen <julien.nguyen3@gmail.com>2021-05-01 11:44:39 +0200
committerJulien Nguyen <julien.nguyen3@gmail.com>2021-05-06 22:13:05 +0200
commit82522662f85680863c043b56733831f4a5df2a2e (patch)
treece1449324394274cda8712d00334b8fe4d68e8a6 /modules/gdscript/gdscript_compiler.cpp
parent4a7679e4dd9f68270b3d27797146f88491f182b8 (diff)
downloadredot-engine-82522662f85680863c043b56733831f4a5df2a2e.tar.gz
Fix temporary value not released when used as a dictionary key
Diffstat (limited to 'modules/gdscript/gdscript_compiler.cpp')
-rw-r--r--modules/gdscript/gdscript_compiler.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 37ce8ae2cb..ead99fa425 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -966,6 +966,9 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
} else {
gen->write_set(prev_base, key, assigned);
}
+ if (key.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
+ gen->pop_temporary();
+ }
if (assigned.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
gen->pop_temporary();
}