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)))) |