Skip to content

Commit

Permalink
Fix crash with KDE's platformtheme plugin
Browse files Browse the repository at this point in the history
Require QPA plugins to match qt major.minor rules

Change-Id: I78d40bb22d41b71db83c6a89c8ac8e319ec51d43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit dfe71d1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
  • Loading branch information
Allan Sandfeld Jensen authored and Qt Cherry-pick Bot committed Sep 30, 2024
1 parent 7df3f20 commit 4b5b645
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/corelib/plugin/qfactoryloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,14 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
if (!metaDataOk)
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;
for (const QString &key : std::as_const(keys)) {
QLibraryPrivate *&keyMapEntry = keyMap[key];
Expand All @@ -363,9 +371,7 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
// If the existing library was built with a future Qt version,
// whereas the one we're considering has a Qt version that fits
// 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 thisVersion = library->metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger();
if (!(existingVersion > QtVersionNoPatch && thisVersion <= QtVersionNoPatch))
continue; // Existing version is a better match
}
Expand Down

0 comments on commit 4b5b645

Please sign in to comment.