mirror of
https://github.com/godotengine/godot.git
synced 2024-12-15 10:12:40 +08:00
Merge pull request #73501 from anvilfolk/oopsiedaisy
Fix inability to assign null regression
This commit is contained in:
commit
78cd5d813b
@ -1275,21 +1275,19 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
|
||||
bool was_freed = false;
|
||||
Object *src_obj = src->get_validated_object_with_check(was_freed);
|
||||
if (!src_obj) {
|
||||
if (was_freed) {
|
||||
if (src->get_type() == Variant::OBJECT) {
|
||||
bool was_freed = false;
|
||||
Object *src_obj = src->get_validated_object_with_check(was_freed);
|
||||
if (!src_obj && was_freed) {
|
||||
err_text = "Trying to assign invalid previously freed instance.";
|
||||
} else {
|
||||
err_text = "Trying to assign invalid null variable.";
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
|
||||
if (src_obj && !ClassDB::is_parent_class(src_obj->get_class_name(), nc->get_name())) {
|
||||
err_text = "Trying to assign value of type '" + src_obj->get_class_name() +
|
||||
"' to a variable of type '" + nc->get_name() + "'.";
|
||||
OPCODE_BREAK;
|
||||
if (src_obj && !ClassDB::is_parent_class(src_obj->get_class_name(), nc->get_name())) {
|
||||
err_text = "Trying to assign value of type '" + src_obj->get_class_name() +
|
||||
"' to a variable of type '" + nc->get_name() + "'.";
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
}
|
||||
#endif // DEBUG_ENABLED
|
||||
*dst = *src;
|
||||
@ -1314,15 +1312,11 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
|
||||
if (src->get_type() != Variant::NIL) {
|
||||
if (src->get_type() == Variant::OBJECT) {
|
||||
bool was_freed = false;
|
||||
Object *val_obj = src->get_validated_object_with_check(was_freed);
|
||||
if (!val_obj) {
|
||||
if (was_freed) {
|
||||
err_text = "Trying to assign invalid previously freed instance.";
|
||||
} else {
|
||||
err_text = "Trying to assign invalid null variable.";
|
||||
}
|
||||
if (!val_obj && was_freed) {
|
||||
err_text = "Trying to assign invalid previously freed instance.";
|
||||
OPCODE_BREAK;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
extends Node
|
||||
|
||||
func test():
|
||||
var typed: Variant = get_node_or_null("does_not_exist")
|
||||
var untyped = null
|
||||
var node_1: Node = typed
|
||||
var node_2: Node = untyped
|
||||
var node_3 = typed
|
||||
var node_4 = untyped
|
||||
print(typed)
|
||||
print(untyped)
|
||||
print(node_1)
|
||||
print(node_2)
|
||||
print(node_3)
|
||||
print(node_4)
|
@ -0,0 +1,7 @@
|
||||
GDTEST_OK
|
||||
<Object#null>
|
||||
<null>
|
||||
<Object#null>
|
||||
<null>
|
||||
<Object#null>
|
||||
<null>
|
Loading…
Reference in New Issue
Block a user