summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-06-18 14:48:21 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-18 16:12:41 +0200
commit732dcfe7fdfa7534ab0de4674ae17f191167a57a (patch)
tree1e1d46fe4154fa9443cb14358752503cf0113ae9
parentcf8647d6aa0f65a51dc9366d407b2218f561970d (diff)
QFactoryLoader: Release unused libraries.
Task-number: QTBUG-31476 Change-Id: Ib2eb076afaa21ab1fdc12944f80483e3de260d4b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 943fb35ab6..1288643e32 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -183,7 +183,7 @@ 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,
@@ -198,8 +198,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;
+ ++keyUsageCount;
}
}
+ if (keyUsageCount || keys.isEmpty())
+ d->libraryList += library;
+ else
+ library->release();
}
}
#else