Utils: Improve tests for small string

It fixes a capacity bug.

Change-Id: I3545eb32d8b23514da286c2df77aebc197df8252
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2024-06-10 16:49:03 +02:00
parent e41fe49f29
commit 8d7e62fa5e
3 changed files with 496 additions and 281 deletions

View File

@@ -39,6 +39,7 @@ public:
using reverse_iterator = std::reverse_iterator<iterator>;
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
using size_type = std::size_t;
static constexpr size_type Capacity = Size;
static_assert(Size < 64 ? sizeof(Internal::StringDataLayout<Size>) == Size + 1
: sizeof(Internal::StringDataLayout<Size>) == Size + 16,

View File

@@ -264,7 +264,7 @@ struct alignas(16) StringDataLayout<MaximumShortStringDataAreaSize,
StringDataLayout(const char *string, size_type size, size_type capacity) noexcept
: size_{static_cast<int>(size)}
, capacity_{static_cast<int>(capacity)}
, capacity_{std::max<int>(capacity, MaximumShortStringDataAreaSize)}
{
if (Q_LIKELY(capacity <= shortStringCapacity())) {
std::char_traits<char>::copy(buffer, string, size);

File diff suppressed because it is too large Load Diff