diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 9e5056d4ab8..18edcde00ed 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -6098,9 +6098,10 @@ QString QString::fromUcs4(const char32_t *unicode, qsizetype size) if (!unicode) return QString(); if (size < 0) { - size = 0; - while (unicode[size] != 0) - ++size; + if constexpr (sizeof(char32_t) == sizeof(wchar_t)) + size = wcslen(reinterpret_cast(unicode)); + else + size = std::char_traits::length(unicode); } QStringDecoder toUtf16(QStringDecoder::Utf32, QStringDecoder::Flag::Stateless); return toUtf16(QByteArrayView(reinterpret_cast(unicode), size * 4));