forked from qt-creator/qt-creator
QmlDesigner: Fix UB in QmlPreviewPlugin::getPreviewPlugin()
Each call to PluginManager::plugins() creates a new QVector object, iterators are only comparable for iterators from the same vector. It worked in practice because the underlying storage was the same here as the QVector objects were only shallow copies. Change-Id: I2e276535942bd949acf91e12873c7bdf9d5c34d6 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -158,13 +158,15 @@ void QmlPreviewPlugin::setLanguageLocale(const QString &locale)
|
||||
|
||||
QObject *QmlPreviewPlugin::getPreviewPlugin()
|
||||
{
|
||||
auto pluginIt = std::find_if(ExtensionSystem::PluginManager::plugins().begin(),
|
||||
ExtensionSystem::PluginManager::plugins().end(),
|
||||
const QVector<ExtensionSystem::PluginSpec *> specs = ExtensionSystem::PluginManager::plugins();
|
||||
|
||||
auto pluginIt = std::find_if(specs.begin(),
|
||||
specs.end(),
|
||||
[](const ExtensionSystem::PluginSpec *p) {
|
||||
return p->name() == "QmlPreview";
|
||||
});
|
||||
|
||||
if (pluginIt != ExtensionSystem::PluginManager::plugins().constEnd())
|
||||
if (pluginIt != specs.end())
|
||||
return (*pluginIt)->plugin();
|
||||
|
||||
return nullptr;
|
||||
|
Reference in New Issue
Block a user