Fix int/qsizetype mismatches in qstring.h

[ChangeLog][QtCore][QString] Fixed result truncation mod INT_MAX in
fromStdSstring(), fromStdU16string(), fromStdU32string(), and
fromStdWstring().

[ChangeLog][QtCore][QAnyStringView] Fixed result truncation mod
INT_MAX in asLatin1StringView().

[ChangeLog][QtCore][QUtf8StringView] Fixed result truncation mod
INT_MAX in toString().

Change-Id: I944c561018a6ab4581ad6b1d71ec1ba1accba4a4
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit ff053b39a3083813f89b1a3b6e735c047c09890f)
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2022-05-16 11:57:53 +02:00
parent 3a6c76a09a
commit c00b8652b5

View File

@ -356,7 +356,7 @@ constexpr QAnyStringView::QAnyStringView(QLatin1String str) noexcept
constexpr QLatin1String QAnyStringView::asLatin1StringView() const
{
Q_ASSERT(isLatin1());
return QLatin1String{m_data_utf8, int(size())};
return QLatin1String{m_data_utf8, size()};
}
template <typename Visitor>
@ -1189,8 +1189,7 @@ ushort QStringView::toUShort(bool *ok, int base) const
template <bool UseChar8T>
QString QBasicUtf8StringView<UseChar8T>::toString() const
{
Q_ASSERT(size() == int(size()));
return QString::fromUtf8(data(), int(size()));
return QString::fromUtf8(data(), size());
}
//
@ -1451,7 +1450,7 @@ inline std::string QString::toStdString() const
{ return toUtf8().toStdString(); }
inline QString QString::fromStdString(const std::string &s)
{ return fromUtf8(s.data(), int(s.size())); }
{ return fromUtf8(s.data(), qsizetype(s.size())); }
inline std::wstring QString::toStdWString() const
{
@ -1462,16 +1461,16 @@ inline std::wstring QString::toStdWString() const
}
inline QString QString::fromStdWString(const std::wstring &s)
{ return fromWCharArray(s.data(), int(s.size())); }
{ return fromWCharArray(s.data(), qsizetype(s.size())); }
inline QString QString::fromStdU16String(const std::u16string &s)
{ return fromUtf16(s.data(), int(s.size())); }
{ return fromUtf16(s.data(), qsizetype(s.size())); }
inline std::u16string QString::toStdU16String() const
{ return std::u16string(reinterpret_cast<const char16_t*>(data()), length()); }
inline QString QString::fromStdU32String(const std::u32string &s)
{ return fromUcs4(s.data(), int(s.size())); }
{ return fromUcs4(s.data(), qsizetype(s.size())); }
inline std::u32string QString::toStdU32String() const
{