diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2020-11-11 09:33:31 +0100 |
---|---|---|
committer | Andrei Golubev <andrei.golubev@qt.io> | 2020-11-12 15:25:06 +0100 |
commit | 9c5117756419480eb83e6484cee6ad2f01358df7 (patch) | |
tree | 13d361e92d5c7df5870d47f2215ea97f7049666c | |
parent | e796857abb73d44b6862687c353ee4977d22cc77 (diff) |
QStringBuilder: change int to qsizetype
We should use qsizetype when interacting with QString/QBA to avoid
subtle overflow bugs and int limitations
Change-Id: I4ae5ea98a72c6283c7dca0ecfa94cc1669c9b446
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | src/corelib/text/qstringbuilder.h | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/corelib/text/qstringbuilder.h b/src/corelib/text/qstringbuilder.h index 7d35a04762..ec5ef6eb7c 100644 --- a/src/corelib/text/qstringbuilder.h +++ b/src/corelib/text/qstringbuilder.h @@ -108,7 +108,7 @@ private: friend class QString; template <typename T> T convertTo() const { - const uint len = QConcatenable< QStringBuilder<A, B> >::size(*this); + const qsizetype len = QConcatenable< QStringBuilder<A, B> >::size(*this); T s(len, Qt::Uninitialized); // we abuse const_cast / constData here because we know we've just @@ -117,10 +117,10 @@ private: typename T::const_iterator const start = d; QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d); - if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && int(len) != d - start) { + if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && len != d - start) { // this resize is necessary since we allocate a bit too much // when dealing with variable sized 8-bit encodings - s.resize(int(d - start)); + s.resize(d - start); } return s; } @@ -257,7 +257,7 @@ template <> struct QConcatenable<QString> : private QAbstractConcatenable static qsizetype size(const QString &a) { return a.size(); } static inline void appendTo(const QString &a, QChar *&out) { - const int n = a.size(); + const qsizetype n = a.size(); if (n) memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * n); out += n; @@ -279,7 +279,7 @@ template <> struct QConcatenable<QStringView> : private QAbstractConcatenable } }; -template <int N> struct QConcatenable<const char[N]> : private QAbstractConcatenable +template <qsizetype N> struct QConcatenable<const char[N]> : private QAbstractConcatenable { typedef const char type[N]; typedef QByteArray ConvertTo; @@ -298,7 +298,7 @@ template <int N> struct QConcatenable<const char[N]> : private QAbstractConcaten } }; -template <int N> struct QConcatenable<char[N]> : QConcatenable<const char[N]> +template <qsizetype N> struct QConcatenable<char[N]> : QConcatenable<const char[N]> { typedef char type[N]; }; @@ -327,7 +327,7 @@ template <> struct QConcatenable<char *> : QConcatenable<const char*> typedef char *type; }; -template <int N> struct QConcatenable<const char16_t[N]> : private QAbstractConcatenable +template <qsizetype N> struct QConcatenable<const char16_t[N]> : private QAbstractConcatenable { using type = const char16_t[N]; using ConvertTo = QString; @@ -340,7 +340,7 @@ template <int N> struct QConcatenable<const char16_t[N]> : private QAbstractConc } }; -template <int N> struct QConcatenable<char16_t[N]> : QConcatenable<const char16_t[N]> +template <qsizetype N> struct QConcatenable<char16_t[N]> : QConcatenable<const char16_t[N]> { using type = char16_t[N]; }; @@ -427,7 +427,7 @@ template <typename A, typename B> QByteArray &appendToByteArray(QByteArray &a, const QStringBuilder<A, B> &b, char) { // append 8-bit data to a byte array - int len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); + qsizetype len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); a.reserve(len); char *it = a.data() + a.size(); QConcatenable< QStringBuilder<A, B> >::appendTo(b, it); @@ -454,11 +454,11 @@ QByteArray &operator+=(QByteArray &a, const QStringBuilder<A, B> &b) template <typename A, typename B> QString &operator+=(QString &a, const QStringBuilder<A, B> &b) { - int len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); + qsizetype len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); a.reserve(len); QChar *it = a.data() + a.size(); QConcatenable< QStringBuilder<A, B> >::appendTo(b, it); - a.resize(int(it - a.constData())); //may be smaller than len if there was conversion from utf8 + a.resize(it - a.constData()); //may be smaller than len if there was conversion from utf8 return a; } |