Fix sharing of typed arrays from constructor

pull/1483/head
A Thousand Ships 2024-06-06 16:40:10 +02:00
parent 21d526e5e5
commit 41aa71f8c3
No known key found for this signature in database
GPG Key ID: 2033189A662F8BD7
1 changed files with 16 additions and 6 deletions

View File

@ -44,10 +44,15 @@ public:
_ref(p_array); _ref(p_array);
} }
_FORCE_INLINE_ TypedArray(const Variant &p_variant) : _FORCE_INLINE_ TypedArray(const Variant &p_variant) :
Array(p_variant.operator Array(), Variant::OBJECT, T::get_class_static(), Variant()) { TypedArray(Array(p_variant)) {
}
_FORCE_INLINE_ TypedArray(const Array &p_array) {
set_typed(Variant::OBJECT, T::get_class_static(), Variant());
if (is_same_typed(p_array)) {
_ref(p_array);
} else {
assign(p_array);
} }
_FORCE_INLINE_ TypedArray(const Array &p_array) :
Array(p_array, Variant::OBJECT, T::get_class_static(), Variant()) {
} }
_FORCE_INLINE_ TypedArray() { _FORCE_INLINE_ TypedArray() {
set_typed(Variant::OBJECT, T::get_class_static(), Variant()); set_typed(Variant::OBJECT, T::get_class_static(), Variant());
@ -65,10 +70,15 @@ public:
_ref(p_array); \ _ref(p_array); \
} \ } \
_FORCE_INLINE_ TypedArray(const Variant &p_variant) : \ _FORCE_INLINE_ TypedArray(const Variant &p_variant) : \
Array(p_variant.operator Array(), m_variant_type, StringName(), Variant()) { \ TypedArray(Array(p_variant)) { \
} \
_FORCE_INLINE_ TypedArray(const Array &p_array) { \
set_typed(m_variant_type, StringName(), Variant()); \
if (is_same_typed(p_array)) { \
_ref(p_array); \
} else { \
assign(p_array); \
} \ } \
_FORCE_INLINE_ TypedArray(const Array &p_array) : \
Array(p_array, m_variant_type, StringName(), Variant()) { \
} \ } \
_FORCE_INLINE_ TypedArray() { \ _FORCE_INLINE_ TypedArray() { \
set_typed(m_variant_type, StringName(), Variant()); \ set_typed(m_variant_type, StringName(), Variant()); \