GDScript: for loop override stack variable bug fix

Fix: #42050
This commit is contained in:
Thakee Nathees 2020-09-15 02:47:37 +05:30
parent 3b25548e4c
commit 119936d939

View file

@ -579,8 +579,8 @@ void GDScriptByteCodeGenerator::write_endif() {
}
void GDScriptByteCodeGenerator::write_for(const Address &p_variable, const Address &p_list) {
int counter_pos = increase_stack() | (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS);
int container_pos = increase_stack() | (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS);
int counter_pos = add_temporary() | (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS);
int container_pos = add_temporary() | (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS);
current_breaks_to_patch.push_back(List<int>());
@ -628,7 +628,9 @@ void GDScriptByteCodeGenerator::write_endfor() {
}
current_breaks_to_patch.pop_back();
current_stack_size -= 2; // Remove loop temporaries.
// Remove loop temporaries.
pop_temporary();
pop_temporary();
}
void GDScriptByteCodeGenerator::start_while_condition() {