summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qfactoryloader.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-20 16:13:38 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-20 16:13:38 +0200
commit533820320c30fca6028415321d1a3b937a261088 (patch)
tree1a0eebcc5f5729f5a9d2f00b080c5fcf1cd15c6f /src/corelib/plugin/qfactoryloader.cpp
parent25739bebba0343a8b35775a073c49f0fba080762 (diff)
parent172fa29dffef0eb55378f62b3ea1c18810639b3f (diff)
Merge remote-tracking branch 'origin/release' into stable
Diffstat (limited to 'src/corelib/plugin/qfactoryloader.cpp')
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 61c9b40e83..c617325e9e 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -72,7 +72,6 @@ public:
QByteArray iid;
QList<QLibraryPrivate*> libraryList;
QMap<QString,QLibraryPrivate*> keyMap;
- QStringList keyList;
QString suffix;
Qt::CaseSensitivity cs;
QStringList loadedPaths;
@@ -176,10 +175,8 @@ void QFactoryLoader::update()
metaDataOk = true;
QJsonArray k = object.value(QLatin1String("Keys")).toArray();
- for (int i = 0; i < k.size(); ++i) {
- QString s = k.at(i).toString();
- keys += s;
- }
+ for (int i = 0; i < k.size(); ++i)
+ keys += d->cs ? k.at(i).toString() : k.at(i).toString().toLower();
}
if (qt_debug_component())
qDebug() << "Got keys from plugin meta data" << keys;
@@ -190,15 +187,13 @@ void QFactoryLoader::update()
continue;
}
- d->libraryList += library;
+ int keyUsageCount = 0;
for (int k = 0; k < keys.count(); ++k) {
// first come first serve, unless the first
// library was built with a future Qt version,
// whereas the new one has a Qt version that fits
// better
- QString key = keys.at(k);
- if (!d->cs)
- key = key.toLower();
+ const QString &key = keys.at(k);
QLibraryPrivate *previous = d->keyMap.value(key);
int prev_qt_version = 0;
if (previous) {
@@ -207,9 +202,13 @@ void QFactoryLoader::update()
int qt_version = (int)library->metaData.value(QLatin1String("version")).toDouble();
if (!previous || (prev_qt_version > QT_VERSION && qt_version <= QT_VERSION)) {
d->keyMap[key] = library;
- d->keyList += keys.at(k);
+ ++keyUsageCount;
}
}
+ if (keyUsageCount || keys.isEmpty())
+ d->libraryList += library;
+ else
+ library->release();
}
}
#else