diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-11 06:47:20 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-11 06:47:20 +0000 |
commit | 20f35402b633e10bd015df25ae517275f05833ed (patch) | |
tree | 158c5bbc2afa4735435720afc2f8efe2ab96bf0d /pym | |
parent | 0db63fa347396296ba1dca15b3d72a946e69f096 (diff) | |
download | portage-20f35402b633e10bd015df25ae517275f05833ed.tar.gz portage-20f35402b633e10bd015df25ae517275f05833ed.tar.bz2 portage-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.py | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/pym/portage/util.py b/pym/portage/util.py index c84f351be..c55da0366 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)) |