Skip to content

Commit

Permalink
Fix for kivy#515 - dependency graph issue
Browse files Browse the repository at this point in the history
Old for removing redundant dependency graphs had a bug in it where graph[i] was compared against itself and then removed (as it appears equal to itself).  This caused kivy#515.  I've rearranged the loop in the function for removing redundant graphs to avoid this
  • Loading branch information
hottwaj committed Dec 9, 2015
1 parent 015f000 commit 3e025c7
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions pythonforandroid/toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -575,15 +575,22 @@ def __init__(self):
def remove_redundant_graphs(self):
'''Removes possible graphs if they are equivalent to others.'''
graphs = self.graphs
initial_num_graphs = len(graphs)
# Walk the list backwards so that popping elements doesn't
# mess up indexing
for i in range(len(graphs) - 1):
graph = graphs[initial_num_graphs - 1 - i]
for j in range(1, len(graphs)):
comparison_graph = graphs[initial_num_graphs - 1 - j]
# mess up indexing.

# n.b. no need to test graph 0 as it will have been tested against
# all others by the time we get to it
for i in range(len(graphs) - 1, 0, -1):
graph = graphs[i]

#test graph i against all graphs 0 to i-1
for j in range(0, i):
comparison_graph = graphs[j]

if set(comparison_graph.keys()) == set(graph.keys()):
graphs.pop(initial_num_graphs - 1 - i)
#graph[i] == graph[j]
#so remove graph[i] and continue on to testing graph[i-1]
graphs.pop(i)
break

def add(self, dependent, dependency):
Expand Down

0 comments on commit 3e025c7

Please sign in to comment.