From bb7a6bd989b748a29c1a1e68807da2dd3176186a Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 23 Mar 2026 11:19:30 +0100 Subject: kstd: fix push/emplace_back bug in vector --- libs/kstd/include/kstd/vector | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'libs/kstd/include') diff --git a/libs/kstd/include/kstd/vector b/libs/kstd/include/kstd/vector index b2cce0b..1242489 100644 --- a/libs/kstd/include/kstd/vector +++ b/libs/kstd/include/kstd/vector @@ -594,12 +594,14 @@ namespace kstd { auto new_capacity = m_capacity == 0 ? 1 : m_capacity * 2; auto new_data = allocate_n(new_capacity); + auto old_size = size(); std::allocator_traits::construct(m_allocator, new_data + m_size, value); uninitialized_move_with_allocator(begin(), new_data, size()); destroy_n(begin(), size()); deallocate(); m_data = new_data; m_capacity = new_capacity; + m_size = old_size; } else { @@ -615,12 +617,14 @@ namespace kstd { auto new_capacity = m_capacity == 0 ? 1 : m_capacity * 2; auto new_data = allocate_n(new_capacity); + auto old_size = size(); std::allocator_traits::construct(m_allocator, new_data + m_size, std::move(value)); uninitialized_move_with_allocator(begin(), new_data, size()); destroy_n(begin(), size()); deallocate(); m_data = new_data; m_capacity = new_capacity; + m_size = old_size; } else { @@ -637,12 +641,14 @@ namespace kstd { auto new_capacity = m_capacity == 0 ? 1 : m_capacity * 2; auto new_data = allocate_n(new_capacity); + auto old_size = size(); std::allocator_traits::construct(m_allocator, new_data + m_size, std::forward(args)...); uninitialized_move_with_allocator(begin(), new_data, size()); destroy_n(begin(), size()); deallocate(); m_data = new_data; m_capacity = new_capacity; + m_size = old_size; } else { -- cgit v1.2.3