summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_vm.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-24 18:54:56 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-24 18:54:56 +0200
commit69a23e64e4aa6543adba79c4d3767bf0d2728faa (patch)
tree82ff15f208bb594ce2ecea68212fea84df3c96a6 /modules/gdscript/gdscript_vm.cpp
parenta4fbe4c01f5d4e47bd047b091a65fef9f7eb2cca (diff)
parent27d7760f41d0c819075db37d3234d2587092e682 (diff)
downloadredot-engine-69a23e64e4aa6543adba79c4d3767bf0d2728faa.tar.gz
Merge pull request #89990 from dalexeev/gds-reset-uninit-local-vars
GDScript: Fix uninitialized local variables not being reset
Diffstat (limited to 'modules/gdscript/gdscript_vm.cpp')
-rw-r--r--modules/gdscript/gdscript_vm.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp
index 1a8c22cc11..3cb011b251 100644
--- a/modules/gdscript/gdscript_vm.cpp
+++ b/modules/gdscript/gdscript_vm.cpp
@@ -234,6 +234,7 @@ void (*type_init_function_table[])(Variant *) = {
&&OPCODE_SET_STATIC_VARIABLE, \
&&OPCODE_GET_STATIC_VARIABLE, \
&&OPCODE_ASSIGN, \
+ &&OPCODE_ASSIGN_NULL, \
&&OPCODE_ASSIGN_TRUE, \
&&OPCODE_ASSIGN_FALSE, \
&&OPCODE_ASSIGN_TYPED_BUILTIN, \
@@ -1256,6 +1257,16 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
}
DISPATCH_OPCODE;
+ OPCODE(OPCODE_ASSIGN_NULL) {
+ CHECK_SPACE(2);
+ GET_VARIANT_PTR(dst, 0);
+
+ *dst = Variant();
+
+ ip += 2;
+ }
+ DISPATCH_OPCODE;
+
OPCODE(OPCODE_ASSIGN_TRUE) {
CHECK_SPACE(2);
GET_VARIANT_PTR(dst, 0);