From a050ae84e225cc9c5f391547e675d071deb6393d Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sat, 13 Jun 2020 23:34:35 +0300 Subject: [PATCH] Utils: Use range-based for in QrcParser + Avoid modifying the list while iterating it, and also avoid second scan. Change-Id: Idea74c338e24c300dbc3ca2e4f50797914cc5a1a Reviewed-by: Eike Ziller --- src/libs/utils/qrcparser.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/libs/utils/qrcparser.cpp b/src/libs/utils/qrcparser.cpp index 6c053cc72be..f6e461736f8 100644 --- a/src/libs/utils/qrcparser.cpp +++ b/src/libs/utils/qrcparser.cpp @@ -551,18 +551,21 @@ const QStringList QrcParserPrivate::allUiLanguages(const QLocale *locale) const { if (!locale) return languages(); - QStringList langs = locale->uiLanguages(); - foreach (const QString &language, langs) { // qt4 support - if (language.contains(QLatin1Char('_')) || language.contains(QLatin1Char('-'))) { - QStringList splits = QString(language).replace(QLatin1Char('_'), QLatin1Char('-')) - .split(QLatin1Char('-')); + bool hasEmptyString = false; + const QStringList langs = locale->uiLanguages(); + QStringList allLangs = langs; + for (const QString &language : langs) { + if (language.isEmpty()) + hasEmptyString = true; + else if (language.contains('_') || language.contains('-')) { + const QStringList splits = QString(language).replace('_', '-').split('-'); if (splits.size() > 1 && !langs.contains(splits.at(0))) - langs.append(splits.at(0)); + allLangs.append(splits.at(0)); } } - if (!langs.contains(QString())) - langs.append(QString()); - return langs; + if (!hasEmptyString) + allLangs.append(QString()); + return allLangs; } // ----------------