Merge pull request #53807 from vnen/dont-share-arrays-and-dicts

This commit is contained in:
Rémi Verschelde 2021-10-14 20:42:22 +02:00 committed by GitHub
commit 472ff40f71
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 62 additions and 2 deletions

View file

@ -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 <>

View file

@ -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()

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,3 @@
GDTEST_OK
TEST OTHER DICTIONARY: 0
TEST OTHER DICTIONARY: 0