summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-05-23 18:51:58 +0000
committerZac Medico <zmedico@gentoo.org>2008-05-23 18:51:58 +0000
commit5b9e9d1bb12a636f06da47c138446f3ac4ac7476 (patch)
treea01b65cbad37b9c95c3ad2c3ecd4e5ae571b7e9e
parent594817e3704083bf8fe5ca606392d009b6fbf0f5 (diff)
downloadportage-5b9e9d1bb12a636f06da47c138446f3ac4ac7476.tar.gz
portage-5b9e9d1bb12a636f06da47c138446f3ac4ac7476.tar.bz2
portage-5b9e9d1bb12a636f06da47c138446f3ac4ac7476.zip
Bug #220671 - Fix 'RuntimeError: Set changed size during iteration' error.
svn path=/main/trunk/; revision=10388
-rw-r--r--pym/portage/dbapi/vartree.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index f1923b17f..a5d73843a 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -1779,7 +1779,9 @@ class dblink(object):
# inject files that should be preserved into our image dir
import shutil
missing_paths = []
- for x in candidates:
+ candidates_stack = list(candidates)
+ while candidates_stack:
+ x = candidates_stack.pop()
# skip existing files so the 'new' libs aren't overwritten
if os.path.exists(os.path.join(srcroot, x.lstrip(os.sep))):
missing_paths.append(x)
@@ -1802,6 +1804,7 @@ class dblink(object):
if linktarget[0] != os.sep:
linktarget = os.path.join(os.path.dirname(x), linktarget)
candidates.add(linktarget)
+ candidates_stack.append(linktarget)
else:
shutil.copy2(os.path.join(destroot, x.lstrip(os.sep)),
os.path.join(srcroot, x.lstrip(os.sep)))