From 7cd17f3f41dfbcf6c7cb791dd4db890815f8468c Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Fri, 15 Jul 2011 15:35:52 +0200
Subject: [PATCH] fix access to free()d memory

the 'item' reference may become invalid inside the loop.

Change-Id: I4468b1dc67e565e2eb8ce35268ef44b18142846a
Reviewed-on: http://codereview.qt.nokia.com/1703
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
---
 src/shared/proparser/profileevaluator.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index 55e3e5373b7..8667b79fde0 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -2578,7 +2578,7 @@ ProStringList ProFileEvaluator::Private::evaluateExpandFunction(
                         ret.prepend(item);
                     foreach (const ProString &dep, dependees[item]) {
                         QSet<ProString> &dset = dependencies[dep];
-                        dset.remove(item);
+                        dset.remove(rootSet.at(i)); // *Don't* use 'item' - rootSet may have changed!
                         if (dset.isEmpty())
                             rootSet << dep;
                     }
-- 
GitLab