From 0e594243787e9922b1c33e4792cd8a87071ab7c9 Mon Sep 17 00:00:00 2001 From: Yi Huang Date: Wed, 17 Jul 2024 19:40:57 -0700 Subject: [PATCH] Fix karray fill constructor (#47) --- inc/karray.h | 9 +++++---- src/test/lib/VectorTest.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/inc/karray.h b/inc/karray.h index f6b4b79..7c2ec48 100644 --- a/inc/karray.h +++ b/inc/karray.h @@ -539,13 +539,14 @@ class KRTL_CLASS KArray : PAGED T *operator->() const { return &(*this->_a)[this->_i]; } }; - PAGED KArray(size_t sizeHint = 0, const T &value = (T)0) noexcept + PAGED KArray(size_t count = 0, const T &value = (T)0) noexcept { - if (sizeHint) + if (count) { - (void)grow(sizeHint); - for (ULONG i = 0; i < m_numElements; i++) + (void)grow(count); + for (ULONG i = 0; i < count; i++) _p[i] = value; + m_numElements = static_cast(count); } } diff --git a/src/test/lib/VectorTest.cpp b/src/test/lib/VectorTest.cpp index 2be5dbb..d3f4248 100644 --- a/src/test/lib/VectorTest.cpp +++ b/src/test/lib/VectorTest.cpp @@ -37,5 +37,11 @@ void VectorBasic() TEST_EQUAL(Array[i - 1], i); } - CxPlatVector ArrayWithSizeHint(10); + CxPlatVector ArrayFill(10); + TEST_EQUAL(ArrayFill.size(), 10u); + + // Verify that the newly appended element will be inserted at 10-th slot. + ArrayFill.push_back(10); + TEST_EQUAL(ArrayFill.size(), 11u); + TEST_EQUAL(ArrayFill[10], 10u); }