Zero Dictionary and Array variants when changing type with reset
So they don't reference to the old values anymore and instead refer to a new value.
This commit is contained in:
parent
d952a84c3e
commit
4c14051b3f
|
@ -1301,12 +1301,12 @@ struct VariantZeroAssigner<Signal> {
|
|||
|
||||
template <>
|
||||
struct VariantZeroAssigner<Dictionary> {
|
||||
static _FORCE_INLINE_ void zero(Variant *v) {}
|
||||
static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_dictionary(v) = Dictionary(); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct VariantZeroAssigner<Array> {
|
||||
static _FORCE_INLINE_ void zero(Variant *v) {}
|
||||
static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_array(v) = Array(); }
|
||||
};
|
||||
|
||||
template <>
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
# https://github.com/godotengine/godot/issues/48121
|
||||
|
||||
func test():
|
||||
var x := []
|
||||
var y := []
|
||||
x.push_back(y)
|
||||
print("TEST ARRAY ADD TO SELF: " + str(len(y)))
|
||||
x.clear()
|
||||
|
||||
x = Array()
|
||||
y = Array()
|
||||
x.push_back(y)
|
||||
print("TEST ARRAY ADD TO SELF: " + str(len(y)))
|
||||
x.clear()
|
||||
|
||||
x = Array().duplicate()
|
||||
y = Array().duplicate()
|
||||
x.push_back(y)
|
||||
print("TEST ARRAY ADD TO SELF: " + str(len(y)))
|
||||
x.clear()
|
||||
|
||||
x = [].duplicate()
|
||||
y = [].duplicate()
|
||||
x.push_back(y)
|
||||
print("TEST ARRAY ADD TO SELF: " + str(len(y)))
|
||||
x.clear()
|
||||
|
||||
x = Array()
|
||||
y = Array()
|
||||
x.push_back(y)
|
||||
print("TEST ARRAY ADD TO SELF: " + str(len(y)))
|
||||
x.clear()
|
|
@ -0,0 +1,6 @@
|
|||
GDTEST_OK
|
||||
TEST ARRAY ADD TO SELF: 0
|
||||
TEST ARRAY ADD TO SELF: 0
|
||||
TEST ARRAY ADD TO SELF: 0
|
||||
TEST ARRAY ADD TO SELF: 0
|
||||
TEST ARRAY ADD TO SELF: 0
|
|
@ -0,0 +1,19 @@
|
|||
# https://github.com/godotengine/godot/issues/48121
|
||||
|
||||
func test():
|
||||
var x := Dictionary()
|
||||
var y := Dictionary()
|
||||
y[0]=1
|
||||
y[1]=1
|
||||
y[2]=1
|
||||
print("TEST OTHER DICTIONARY: " + str(len(x)))
|
||||
x.clear()
|
||||
|
||||
x = Dictionary().duplicate()
|
||||
y = Dictionary().duplicate()
|
||||
y[0]=1
|
||||
y[1]=1
|
||||
y[2]=1
|
||||
print("TEST OTHER DICTIONARY: " + str(len(x)))
|
||||
x.clear()
|
||||
return
|
|
@ -0,0 +1,3 @@
|
|||
GDTEST_OK
|
||||
TEST OTHER DICTIONARY: 0
|
||||
TEST OTHER DICTIONARY: 0
|
Loading…
Reference in New Issue