QVarLengthArray::resize_impl: don't default argument, overload

Separates the resize(n) and resize(n, v) code paths in preparation for
fixing QTBUG-109745.

Task-number: QTBUG-109745
Pick-to: 6.5 6.4
Change-Id: I49808ce4dc2f1de0de6af120990b2e00edb47728
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2023-01-09 09:36:04 +01:00
parent d9d74723cc
commit 7c5ff43ea3

View File

@ -207,8 +207,14 @@ protected:
void append_impl(qsizetype prealloc, void *array, const T *buf, qsizetype n);
void reallocate_impl(qsizetype prealloc, void *array, qsizetype size, qsizetype alloc, const T *v = nullptr);
void resize_impl(qsizetype prealloc, void *array, qsizetype sz, const T *v = nullptr)
{ reallocate_impl(prealloc, array, sz, qMax(sz, capacity()), v); }
void resize_impl(qsizetype prealloc, void *array, qsizetype sz, const T &v)
{
reallocate_impl(prealloc, array, sz, qMax(sz, capacity()), &v);
}
void resize_impl(qsizetype prealloc, void *array, qsizetype sz)
{
reallocate_impl(prealloc, array, sz, qMax(sz, capacity()));
}
bool isValidIterator(const const_iterator &i) const
{
@ -378,7 +384,7 @@ public:
template <typename U = T, if_copyable<U> = true>
#endif
void resize(qsizetype sz, const T &v)
{ Base::resize_impl(Prealloc, this->array, sz, &v); }
{ Base::resize_impl(Prealloc, this->array, sz, v); }
inline void clear() { resize(0); }
void squeeze() { reallocate(size(), size()); }