From baeeb19d75f121912e145976dde4c969f9da3aff Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 27 Aug 2023 20:50:45 +0300 Subject: [PATCH] pass the source text length to QString::fromUtf8() from QTranslator::translate() otherwise QString::fromUtf8() will call qstrlen() to figure out the string length Signed-off-by: Ivailo Monev --- src/core/kernel/qtranslator.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/kernel/qtranslator.cpp b/src/core/kernel/qtranslator.cpp index 2ec4d185e..f013a4f1a 100644 --- a/src/core/kernel/qtranslator.cpp +++ b/src/core/kernel/qtranslator.cpp @@ -247,13 +247,13 @@ bool QTranslator::loadFromData(const QByteArray &data) */ QString QTranslator::translate(const char *context, const char *sourceText) const { + const int sourcelen = qstrlen(sourceText); if (isEmpty()) { - return QString::fromUtf8(sourceText); + return QString::fromUtf8(sourceText, sourcelen); } Q_D(const QTranslator); const int contextlen = qstrlen(context); - const int sourcelen = qstrlen(sourceText); foreach (const QTranslatorCache &it, d->cache) { // this search method assumes plurals and regular messages are unique strings if (isCharEqual(it.trmsgctxt.constData(), it.trmsgctxt.size(), context, contextlen) @@ -268,7 +268,7 @@ QString QTranslator::translate(const char *context, const char *sourceText) cons return d->converter.toUnicode(it.trmsgstr.constData(), it.trmsgstr.size()); } } - return QString::fromUtf8(sourceText); + return QString::fromUtf8(sourceText, sourcelen); } /*!