Always pop nodes in recursion detector

This commit is contained in:
Dave Halter
2018-03-04 11:29:25 +01:00
parent c9a64bd1d3
commit a3a39c0757

View File

@@ -49,6 +49,7 @@ per_function_recursion_limit = 2
A function may not be executed more than this number of times recursively. A function may not be executed more than this number of times recursively.
""" """
class RecursionDetector(object): class RecursionDetector(object):
def __init__(self): def __init__(self):
self.pushed_nodes = [] self.pushed_nodes = []
@@ -67,9 +68,11 @@ def execution_allowed(evaluator, node):
node.start_pos) node.start_pos)
yield False yield False
else: else:
pushed_nodes.append(node) try:
yield True pushed_nodes.append(node)
pushed_nodes.pop() yield True
finally:
pushed_nodes.pop()
def execution_recursion_decorator(default=NO_CONTEXTS): def execution_recursion_decorator(default=NO_CONTEXTS):