diff --git a/core/variant/array.cpp b/core/variant/array.cpp index 2357e3f907a..664b5db45bf 100644 --- a/core/variant/array.cpp +++ b/core/variant/array.cpp @@ -277,7 +277,7 @@ void Array::push_back(const Variant &p_value) { ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); Variant value = p_value; ERR_FAIL_COND(!_p->typed.validate(value, "push_back")); - _p->array.push_back(value); + _p->array.push_back(std::move(value)); } void Array::append_array(const Array &p_array) { @@ -308,14 +308,14 @@ Error Array::insert(int p_pos, const Variant &p_value) { ERR_FAIL_COND_V_MSG(_p->read_only, ERR_LOCKED, "Array is in read-only state."); Variant value = p_value; ERR_FAIL_COND_V(!_p->typed.validate(value, "insert"), ERR_INVALID_PARAMETER); - return _p->array.insert(p_pos, value); + return _p->array.insert(p_pos, std::move(value)); } void Array::fill(const Variant &p_value) { ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); Variant value = p_value; ERR_FAIL_COND(!_p->typed.validate(value, "fill")); - _p->array.fill(value); + _p->array.fill(std::move(value)); } void Array::erase(const Variant &p_value) { @@ -485,7 +485,7 @@ void Array::set(int p_idx, const Variant &p_value) { Variant value = p_value; ERR_FAIL_COND(!_p->typed.validate(value, "set")); - operator[](p_idx) = value; + _p->array.write[p_idx] = std::move(value); } const Variant &Array::get(int p_idx) const { @@ -703,9 +703,7 @@ void Array::shuffle() { Variant *data = _p->array.ptrw(); for (int i = n - 1; i >= 1; i--) { const int j = Math::rand() % (i + 1); - const Variant tmp = data[j]; - data[j] = data[i]; - data[i] = tmp; + SWAP(data[i], data[j]); } } @@ -732,7 +730,7 @@ void Array::push_front(const Variant &p_value) { ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); Variant value = p_value; ERR_FAIL_COND(!_p->typed.validate(value, "push_front")); - _p->array.insert(0, value); + _p->array.insert(0, std::move(value)); } Variant Array::pop_back() {