Fix sharing of typed arrays from constructor
parent
21d526e5e5
commit
41aa71f8c3
|
@ -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) :
|
_FORCE_INLINE_ TypedArray(const Array &p_array) {
|
||||||
Array(p_array, Variant::OBJECT, T::get_class_static(), Variant()) {
|
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() {
|
_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) : \
|
_FORCE_INLINE_ TypedArray(const Array &p_array) { \
|
||||||
Array(p_array, m_variant_type, StringName(), Variant()) { \
|
set_typed(m_variant_type, StringName(), Variant()); \
|
||||||
|
if (is_same_typed(p_array)) { \
|
||||||
|
_ref(p_array); \
|
||||||
|
} else { \
|
||||||
|
assign(p_array); \
|
||||||
|
} \
|
||||||
} \
|
} \
|
||||||
_FORCE_INLINE_ TypedArray() { \
|
_FORCE_INLINE_ TypedArray() { \
|
||||||
set_typed(m_variant_type, StringName(), Variant()); \
|
set_typed(m_variant_type, StringName(), Variant()); \
|
||||||
|
|
Loading…
Reference in New Issue