QmlDesigner: Fix try_emplace return value

Don't return a null pointer if the collection model was already
inserted. try_emplace is always return an valid iterator.

Change-Id: Icbb5ec16c1dd63630cbcb1d3fdd6a6a783a76548
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
Marco Bubke
2025-02-12 11:38:16 +01:00
parent c0027950d9
commit 34167e3101

View File

@@ -29,13 +29,8 @@ void DesignSystemInterface::loadDesignSystem()
CollectionModel *DesignSystemInterface::model(const QString &typeName) CollectionModel *DesignSystemInterface::model(const QString &typeName)
{ {
if (auto collection = m_store->collection(typeName)) { if (auto collection = m_store->collection(typeName))
auto itr = m_models.find(typeName);
if (itr != m_models.end())
return itr->second.get();
return createModel(typeName, collection); return createModel(typeName, collection);
}
return nullptr; return nullptr;
} }
@@ -75,14 +70,14 @@ QStringList DesignSystemInterface::collections() const
CollectionModel *DesignSystemInterface::createModel(const QString &typeName, DSThemeManager *collection) CollectionModel *DesignSystemInterface::createModel(const QString &typeName, DSThemeManager *collection)
{ {
auto [newItr, success] = m_models.try_emplace(typeName, auto [iterator, inserted] = m_models.try_emplace(typeName,
makeLazyUniquePtr<CollectionModel>(collection, makeLazyUniquePtr<CollectionModel>(collection,
m_store)); m_store));
if (success) { if (inserted) {
// Otherwise the model will be deleted by the QML engine. // Otherwise the model will be deleted by the QML engine.
QQmlEngine::setObjectOwnership(newItr->second.get(), QQmlEngine::CppOwnership); QQmlEngine::setObjectOwnership(iterator->second.get(), QQmlEngine::CppOwnership);
return newItr->second.get();
} }
return nullptr;
return iterator->second.get();
} }
} // namespace QmlDesigner } // namespace QmlDesigner