1 |
Author: zmedico |
2 |
Date: 2008-11-23 00:33:59 +0000 (Sun, 23 Nov 2008) |
3 |
New Revision: 12046 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.6/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 |
(trunk r12045) |
12 |
|
13 |
|
14 |
Modified: main/branches/2.1.6/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/branches/2.1.6/pym/_emerge/__init__.py 2008-11-23 00:30:55 UTC (rev 12045) |
17 |
+++ main/branches/2.1.6/pym/_emerge/__init__.py 2008-11-23 00:33:59 UTC (rev 12046) |
18 |
@@ -5388,13 +5388,18 @@ |
19 |
print "\nemerge: there are no ebuilds to satisfy "+green(xinfo)+"." |
20 |
|
21 |
# Show parent nodes and the argument that pulled them in. |
22 |
+ traversed_nodes = set() |
23 |
node = myparent |
24 |
msg = [] |
25 |
while node is not None: |
26 |
+ traversed_nodes.add(node) |
27 |
msg.append('(dependency required by "%s" [%s])' % \ |
28 |
(colorize('INFORM', str(node.cpv)), node.type_name)) |
29 |
parent = None |
30 |
for parent in self.digraph.parent_nodes(node): |
31 |
+ if parent in traversed_nodes: |
32 |
+ parent = None |
33 |
+ continue |
34 |
if isinstance(parent, DependencyArg): |
35 |
msg.append('(dependency required by "%s" [argument])' % \ |
36 |
(colorize('INFORM', str(parent)))) |