diff --git a/src/ox/std/vector.hpp b/src/ox/std/vector.hpp index d81776b6f..a74f6b906 100644 --- a/src/ox/std/vector.hpp +++ b/src/ox/std/vector.hpp @@ -571,10 +571,14 @@ constexpr void Vector::insert(std::size_t pos, const T &val) if (m_size == m_cap) { expandCap(m_cap ? m_cap * 2 : initialSize); } - for (auto i = m_size; i > pos; --i) { - new (&m_items[i]) T(std::move(m_items[i - 1])); + if (pos < m_size) { + for (auto i = m_size; i > pos; --i) { + new(&m_items[i]) T(std::move(m_items[i - 1])); + } + m_items[pos] = val; + } else { + new(&m_items[pos]) T(val); } - m_items[pos] = val; ++m_size; }