mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 07:53:26 +00:00
Core: Identity compare objects by id, not by pointers
This commit is contained in:
parent
6296b46008
commit
c5f7a89b0f
2 changed files with 9 additions and 1 deletions
|
@ -3499,7 +3499,7 @@ bool Variant::identity_compare(const Variant &p_variant) const {
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case OBJECT: {
|
case OBJECT: {
|
||||||
return _get_obj().obj == p_variant._get_obj().obj;
|
return _get_obj().id == p_variant._get_obj().id;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case DICTIONARY: {
|
case DICTIONARY: {
|
||||||
|
|
|
@ -1056,6 +1056,14 @@ TEST_CASE("[Variant] Identity comparison") {
|
||||||
Variant obj_null_two_var = Variant((Object *)nullptr);
|
Variant obj_null_two_var = Variant((Object *)nullptr);
|
||||||
CHECK(obj_null_one_var.identity_compare(obj_null_one_var));
|
CHECK(obj_null_one_var.identity_compare(obj_null_one_var));
|
||||||
CHECK(obj_null_one_var.identity_compare(obj_null_two_var));
|
CHECK(obj_null_one_var.identity_compare(obj_null_two_var));
|
||||||
|
|
||||||
|
Object *freed_one = new Object();
|
||||||
|
Variant freed_one_var = freed_one;
|
||||||
|
delete freed_one;
|
||||||
|
Object *freed_two = new Object();
|
||||||
|
Variant freed_two_var = freed_two;
|
||||||
|
delete freed_two;
|
||||||
|
CHECK_FALSE(freed_one_var.identity_compare(freed_two_var));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("[Variant] Nested array comparison") {
|
TEST_CASE("[Variant] Nested array comparison") {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue