QFactoryLoader: de-duplicate two QStringLiterals

When seemingly identical QStringLiterals are used in different
functions, due to the use of lambdas and scoping, they produce
different lambda types and thus duplicated QStringLiteral data.

Fix by moving the QStringLiterals into inline functions and
calling those instead.

Change-Id: Ifaa124ec74e201ccc63fd9afce042f8b2ff22b9e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Marc Mutz 2014-10-08 12:44:06 +02:00
parent 1cc06b2e94
commit a5b647804b
1 changed files with 8 additions and 4 deletions

View File

@ -290,11 +290,15 @@ void QFactoryLoader::refreshAll()
}
}
// avoid duplicate QStringLiteral data:
static inline QString metaDataKeyLiteral() { return QStringLiteral("MetaData"); }
static inline QString keysKeyLiteral() { return QStringLiteral("Keys"); }
QMultiMap<int, QString> QFactoryLoader::keyMap() const
{
QMultiMap<int, QString> result;
const QString metaDataKey = QStringLiteral("MetaData");
const QString keysKey = QStringLiteral("Keys");
const QString metaDataKey = metaDataKeyLiteral();
const QString keysKey = keysKeyLiteral();
const QList<QJsonObject> metaDataList = metaData();
for (int i = 0; i < metaDataList.size(); ++i) {
const QJsonObject metaData = metaDataList.at(i).value(metaDataKey).toObject();
@ -308,8 +312,8 @@ QMultiMap<int, QString> QFactoryLoader::keyMap() const
int QFactoryLoader::indexOf(const QString &needle) const
{
const QString metaDataKey = QStringLiteral("MetaData");
const QString keysKey = QStringLiteral("Keys");
const QString metaDataKey = metaDataKeyLiteral();
const QString keysKey = keysKeyLiteral();
const QList<QJsonObject> metaDataList = metaData();
for (int i = 0; i < metaDataList.size(); ++i) {
const QJsonObject metaData = metaDataList.at(i).value(metaDataKey).toObject();