diff options
author | Katja Marttila <katja.marttila@qt.io> | 2022-06-06 11:57:10 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2022-06-06 14:12:19 +0300 |
commit | 0a44357ba8c59339d4a12a2433c244b8db431904 (patch) | |
tree | 91d4e24a22c9c0940cce013021777bf2728c40bd /src/libs/installer | |
parent | fdfd2e381bd16a99822ef8c9dfdffb75ab29d142 (diff) |
Fix installer crash if already installed virtual components are replaced
If installed component is replaced by another component, core
'categorizes' it under ComponentType::Replacement. By asking
PackageManagerCore::componentByName(QString &name) excludes the replaced
components. Fixed so that all 'categories' are used when searching the
component by its name.
Task-number: QTIFW-2672
Change-Id: I8b5528f7ddca777fe9b696c1d0151640730d1b9f
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/uninstallercalculator.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libs/installer/uninstallercalculator.cpp b/src/libs/installer/uninstallercalculator.cpp index af03df8c5..3de9f5b60 100644 --- a/src/libs/installer/uninstallercalculator.cpp +++ b/src/libs/installer/uninstallercalculator.cpp @@ -192,7 +192,10 @@ void UninstallerCalculator::appendVirtualComponentsToUninstall(const bool revers } } else { for (const QString &componentName : qAsConst(m_localVirtualComponents)) { - Component *virtualComponent = m_core->componentByName(componentName); + Component *virtualComponent = m_core->componentByName(componentName, m_core->components(PackageManagerCore::ComponentType::All)); + if (!virtualComponent) + continue; + if (virtualComponent->isInstalled() && !m_componentsToUninstall.contains(virtualComponent)) { // Components with auto dependencies were handled in the previous step if (!virtualComponent->autoDependencies().isEmpty() || virtualComponent->forcedInstallation()) |