mirror of
https://github.com/godotengine/godot.git
synced 2024-11-26 14:13:10 +00:00
Merge pull request #66584 from rune-scape/rune-validated-call-obj-bug
Fix unset `ObjectID` with validated `get_object()` call
This commit is contained in:
commit
51bb3c36dd
@ -1047,7 +1047,7 @@ struct VariantInternalAccessor<PackedColorArray> {
|
||||
template <>
|
||||
struct VariantInternalAccessor<Object *> {
|
||||
static _FORCE_INLINE_ Object *get(const Variant *v) { return const_cast<Object *>(*VariantInternal::get_object(v)); }
|
||||
static _FORCE_INLINE_ void set(Variant *v, const Object *p_value) { *VariantInternal::get_object(v) = const_cast<Object *>(p_value); }
|
||||
static _FORCE_INLINE_ void set(Variant *v, const Object *p_value) { VariantInternal::object_assign(v, p_value); }
|
||||
};
|
||||
|
||||
template <>
|
||||
@ -1532,27 +1532,4 @@ struct VariantTypeConstructor {
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct VariantTypeConstructor<Object *> {
|
||||
_FORCE_INLINE_ static void variant_from_type(void *p_variant, void *p_value) {
|
||||
Variant *variant = reinterpret_cast<Variant *>(p_variant);
|
||||
VariantInitializer<Object *>::init(variant);
|
||||
Object *object = *(reinterpret_cast<Object **>(p_value));
|
||||
if (object) {
|
||||
if (object->is_ref_counted()) {
|
||||
if (!VariantInternal::initialize_ref(object)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
VariantInternalAccessor<Object *>::set(variant, object);
|
||||
VariantInternalAccessor<ObjectID>::set(variant, object->get_instance_id());
|
||||
}
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ static void type_from_variant(void *p_value, void *p_variant) {
|
||||
Object **value = reinterpret_cast<Object **>(p_value);
|
||||
*value = VariantInternalAccessor<Object *>::get(reinterpret_cast<Variant *>(p_variant));
|
||||
}
|
||||
};
|
||||
|
||||
#endif // VARIANT_INTERNAL_H
|
||||
|
Loading…
Reference in New Issue
Block a user