summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@nokia.com>2012-01-30 13:04:11 +0100
committerTim Jenssen <tim.jenssen@nokia.com>2012-01-30 14:18:02 +0100
commitd3411f382b7c19ae385f39871a6086228fdc86d0 (patch)
tree7fbb4d8ee4fc4b6586a6fb2b590edcdd7c3bab2a
parent1babeb2123a15b085767a1a3cdd273c93a1caea2 (diff)
delete the components in the updater case in a safer way1.2
- we had problems that local component are replaced by new ones from server, even this should not happen we don't want this as a crash Change-Id: I87688d96cd52220a07863df47a3778b9f9fbdc66 Reviewed-by: Alexander Lenhardt <alexander.lenhardt@nokia.com> Reviewed-by: Karsten Heimrich <karsten.heimrich@nokia.com>
-rw-r--r--installerbuilder/libinstaller/packagemanagercore_p.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/installerbuilder/libinstaller/packagemanagercore_p.cpp b/installerbuilder/libinstaller/packagemanagercore_p.cpp
index 928c2363e..7686681f3 100644
--- a/installerbuilder/libinstaller/packagemanagercore_p.cpp
+++ b/installerbuilder/libinstaller/packagemanagercore_p.cpp
@@ -346,17 +346,24 @@ void PackageManagerCorePrivate::clearAllComponentLists()
void PackageManagerCorePrivate::clearUpdaterComponentLists()
{
- qDeleteAll(m_updaterComponents);
- m_updaterComponents.clear();
+ QSet<Component*> usedComponents =
+ QSet<Component*>::fromList(m_updaterComponents + m_updaterComponentsDeps);
+
+ const QList<QPair<Component*, Component*> > list = m_componentsToReplaceUpdaterMode.values();
+ for (int i = 0; i < list.count(); ++i) {
+ if (usedComponents.contains(list.at(i).second))
+ qWarning() << "a replaceme was allready in the list - is that correct?";
+ else
+ usedComponents.insert(list.at(i).second);
+ }
- qDeleteAll(m_updaterComponentsDeps);
+ qDeleteAll(usedComponents);
+
+ m_updaterComponents.clear();
m_updaterComponentsDeps.clear();
m_updaterDependencyReplacements.clear();
- const QList<QPair<Component*, Component*> > list = m_componentsToReplaceUpdaterMode.values();
- for (int i = 0; i < list.count(); ++i)
- delete list.at(i).second;
m_componentsToReplaceUpdaterMode.clear();
m_componentsToInstallCalculated = false;
}