Fix crash with KDE's platformtheme plugin
Require QPA plugins to match qt major.minor rules Change-Id: I78d40bb22d41b71db83c6a89c8ac8e319ec51d43 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit dfe71d1d23746223b7bd047108850d07f8caa6e5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
7df3f20b91
commit
4b5b6451f4
@ -348,6 +348,14 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
|
|||||||
if (!metaDataOk)
|
if (!metaDataOk)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
static constexpr qint64 QtVersionNoPatch = QT_VERSION_CHECK(QT_VERSION_MAJOR, QT_VERSION_MINOR, 0);
|
||||||
|
int thisVersion = library->metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger();
|
||||||
|
if (iid.startsWith(QStringLiteral("org.qt-project.Qt.QPA"))) {
|
||||||
|
// QPA plugins must match Qt Major.Minor
|
||||||
|
if (thisVersion != QtVersionNoPatch)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
int keyUsageCount = 0;
|
int keyUsageCount = 0;
|
||||||
for (const QString &key : std::as_const(keys)) {
|
for (const QString &key : std::as_const(keys)) {
|
||||||
QLibraryPrivate *&keyMapEntry = keyMap[key];
|
QLibraryPrivate *&keyMapEntry = keyMap[key];
|
||||||
@ -363,9 +371,7 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
|
|||||||
// If the existing library was built with a future Qt version,
|
// If the existing library was built with a future Qt version,
|
||||||
// whereas the one we're considering has a Qt version that fits
|
// whereas the one we're considering has a Qt version that fits
|
||||||
// better, we prioritize the better match.
|
// better, we prioritize the better match.
|
||||||
static constexpr qint64 QtVersionNoPatch = QT_VERSION_CHECK(QT_VERSION_MAJOR, QT_VERSION_MINOR, 0);
|
|
||||||
int existingVersion = existingLibrary->metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger();
|
int existingVersion = existingLibrary->metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger();
|
||||||
int thisVersion = library->metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger();
|
|
||||||
if (!(existingVersion > QtVersionNoPatch && thisVersion <= QtVersionNoPatch))
|
if (!(existingVersion > QtVersionNoPatch && thisVersion <= QtVersionNoPatch))
|
||||||
continue; // Existing version is a better match
|
continue; // Existing version is a better match
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user