summaryrefslogtreecommitdiff
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 06:47:20 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 06:47:20 +0000
commit20f35402b633e10bd015df25ae517275f05833ed (patch)
tree158c5bbc2afa4735435720afc2f8efe2ab96bf0d /pym
parentFix __getitem__ to convert mtime to long, and remove unreachable code (diff)
downloadportage-multirepo-20f35402b633e10bd015df25ae517275f05833ed.tar.gz
portage-multirepo-20f35402b633e10bd015df25ae517275f05833ed.tar.bz2
portage-multirepo-20f35402b633e10bd015df25ae517275f05833ed.zip
Fix an issue with incomplete deepcopy of _LazyItem instances inside
LazyItemsDict.__deepcopy__(). Thanks to Arfrever for reporting. (trunk r12777) svn path=/main/branches/2.1.6/; revision=13021
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/util.py11
1 files changed, 3 insertions, 8 deletions
diff --git a/pym/portage/util.py b/pym/portage/util.py
index c84f351b..c55da036 100644
--- a/pym/portage/util.py
+++ b/pym/portage/util.py
@@ -1170,17 +1170,12 @@ class LazyItemsDict(dict):
memo[id(self)] = result
for k in self:
k_copy = deepcopy(k, memo)
- if k in self.lazy_items:
+ if k in list(self.lazy_items):
lazy_item = self.lazy_items[k]
- try:
- result.lazy_items[k_copy] = deepcopy(lazy_item, memo)
- except TypeError:
- # If deepcopy fails for a lazy singleton, try to
- # evaluate the singleton and deepcopy the result.
- if not lazy_item.singleton:
- raise
+ if lazy_item.singleton:
dict.__setitem__(result, k_copy, deepcopy(self[k], memo))
else:
+ result.lazy_items[k_copy] = deepcopy(lazy_item, memo)
dict.__setitem__(result, k_copy, None)
else:
dict.__setitem__(result, k_copy, deepcopy(self[k], memo))