summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 03:44:38 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 03:44:38 +0000
commit13d9d37a0f99e6cfea9a36d04497df22f249c6f3 (patch)
tree5355e9013da046251331299d6e3292b6f2c9f8f6
parent6d2361b623399dc11b809e17c9efc0db87cdc870 (diff)
downloadportage-13d9d37a0f99e6cfea9a36d04497df22f249c6f3.tar.gz
portage-13d9d37a0f99e6cfea9a36d04497df22f249c6f3.tar.bz2
portage-13d9d37a0f99e6cfea9a36d04497df22f249c6f3.zip
Fix digraph.clone() to properly clone priority lists. (trunk r12587)
svn path=/main/branches/2.1.6/; revision=12868
-rw-r--r--pym/portage/__init__.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 20fb6ba2f..0f27e2b39 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -561,8 +561,14 @@ class digraph(object):
def clone(self):
clone = digraph()
clone.nodes = {}
- for k, v in self.nodes.iteritems():
- clone.nodes[k] = (v[0].copy(), v[1].copy(), v[2])
+ for children, parents, node in self.nodes.itervalues():
+ children_clone = {}
+ for child, priorities in children.iteritems():
+ children_clone[child] = priorities[:]
+ parents_clone = {}
+ for parent, priorities in parents.iteritems():
+ parents_clone[parent] = priorities[:]
+ clone.nodes[node] = (children_clone, parents_clone, node)
clone.order = self.order[:]
return clone