From 066caebd8ad3a7fc9279aea2e8bbd0ef7912687d Mon Sep 17 00:00:00 2001
From: Marc Mutz <marc.mutz@kdab.com>
Date: Sat, 26 Dec 2015 23:45:32 +0100
Subject: [PATCH] QTranslator: optimize string handling in find_transformation

- Don't repeatedly truncate a (shared) QString, truncate a QStringRef
  instead, preventing a detach.

Change-Id: I1a9cf7fc5bc9ea06279f7e2548f2bd144b8780a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
---
 src/corelib/kernel/qtranslator.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index 09d8d762714..ce1d4917cb3 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -668,7 +668,8 @@ static QString find_translation(const QLocale & locale,
     }
 
     // start guessing
-    for (QString localeName : qAsConst(fuzzyLocales)) {
+    for (const QString &fuzzyLocale : qAsConst(fuzzyLocales)) {
+        QStringRef localeName(&fuzzyLocale);
         for (;;) {
             int rightmost = localeName.lastIndexOf(QLatin1Char('_'));
             // no truncations? fail
-- 
GitLab