QString: use new QUtf8StringView overloads

... to prepend/append/insert QByteArray and const char*, instead of
the old inline QString::fromUtf8(), which litters the call sites with
temporary QString objects.

Can't use qToUtf8StringViewIgnoringNull() for QByteArray parameters to
avoid the extra isNull() check, because some QString tests depend on
whether we append/prepend/insert null or empty.

Fixes: QTBUG-109092
Change-Id: Ibf7b99aad844d0c2219ccc1c30f6666c5dfc7758
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit 451dbca16c9ec4ef5a03a71b7b71a22291cf8a4b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2022-12-13 09:32:58 +01:00 committed by Qt Cherry-pick Bot
parent fe386e808b
commit db51321ce6

View File

@ -1040,21 +1040,21 @@ public:
// these are needed, so it compiles with STL support enabled
QT_ASCII_CAST_WARN inline QString &prepend(const char *s)
{ return prepend(QString::fromUtf8(s)); }
{ return prepend(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &prepend(const QByteArray &s)
{ return prepend(QString::fromUtf8(s)); }
{ return prepend(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &append(const char *s)
{ return append(QString::fromUtf8(s)); }
{ return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &append(const QByteArray &s)
{ return append(QString::fromUtf8(s)); }
{ return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &insert(qsizetype i, const char *s)
{ return insert(i, QString::fromUtf8(s)); }
{ return insert(i, QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &insert(qsizetype i, const QByteArray &s)
{ return insert(i, QString::fromUtf8(s)); }
{ return insert(i, QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &operator+=(const char *s)
{ return append(QString::fromUtf8(s)); }
{ return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &operator+=(const QByteArray &s)
{ return append(QString::fromUtf8(s)); }
{ return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline bool operator==(const char *s) const;
QT_ASCII_CAST_WARN inline bool operator!=(const char *s) const;
@ -1508,7 +1508,7 @@ inline QString operator+(QChar s1, const QString &s2)
{ QString t(s1); t += s2; return t; }
# if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
QT_ASCII_CAST_WARN inline QString operator+(const QString &s1, const char *s2)
{ QString t(s1); t += QString::fromUtf8(s2); return t; }
{ QString t(s1); t += QUtf8StringView(s2); return t; }
QT_ASCII_CAST_WARN inline QString operator+(QString &&lhs, const char *rhs)
{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
QT_ASCII_CAST_WARN inline QString operator+(const char *s1, const QString &s2)
@ -1516,7 +1516,7 @@ QT_ASCII_CAST_WARN inline QString operator+(const char *s1, const QString &s2)
QT_ASCII_CAST_WARN inline QString operator+(const QByteArray &ba, const QString &s)
{ QString t = QString::fromUtf8(ba); t += s; return t; }
QT_ASCII_CAST_WARN inline QString operator+(const QString &s, const QByteArray &ba)
{ QString t(s); t += QString::fromUtf8(ba); return t; }
{ QString t(s); t += QUtf8StringView(ba); return t; }
QT_ASCII_CAST_WARN inline QString operator+(QString &&lhs, const QByteArray &rhs)
{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
# endif // QT_NO_CAST_FROM_ASCII