Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r12045 - main/trunk/pym/_emerge
Date: Sun, 23 Nov 2008 00:30:59
Message-Id: E1L42sK-0001rT-LB@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-11-23 00:30:55 +0000 (Sun, 23 Nov 2008)
3 New Revision: 12045
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 When displaying anscestors of an unstatisfied dependency (code from bug
9 #245358), avoid a potential infinite loop and memory leak triggered by
10 circular dependencies. Thanks to Peter Weller <welp@g.o> for reporting.
11
12
13 Modified: main/trunk/pym/_emerge/__init__.py
14 ===================================================================
15 --- main/trunk/pym/_emerge/__init__.py 2008-11-22 23:37:04 UTC (rev 12044)
16 +++ main/trunk/pym/_emerge/__init__.py 2008-11-23 00:30:55 UTC (rev 12045)
17 @@ -5404,13 +5404,18 @@
18 print "\nemerge: there are no ebuilds to satisfy "+green(xinfo)+"."
19
20 # Show parent nodes and the argument that pulled them in.
21 + traversed_nodes = set()
22 node = myparent
23 msg = []
24 while node is not None:
25 + traversed_nodes.add(node)
26 msg.append('(dependency required by "%s" [%s])' % \
27 (colorize('INFORM', str(node.cpv)), node.type_name))
28 parent = None
29 for parent in self.digraph.parent_nodes(node):
30 + if parent in traversed_nodes:
31 + parent = None
32 + continue
33 if isinstance(parent, DependencyArg):
34 msg.append('(dependency required by "%s" [argument])' % \
35 (colorize('INFORM', str(parent))))