]> arthur.barton.de Git - bup.git/commit
walk_object: rewrite as nonrecursive
authorRob Browning <rlb@defaultvalue.org>
Sat, 22 Oct 2016 15:57:07 +0000 (10:57 -0500)
committerRob Browning <rlb@defaultvalue.org>
Sat, 22 Oct 2016 15:57:07 +0000 (10:57 -0500)
commitb7248d011b8f9fba999f0f7c635f6ad04d1f2f83
tree8655096102bb45a7ab157783a4161e69d6b9db3c
parentc4bb97b7a4e25eb245c85963035344b67f50854b
walk_object: rewrite as nonrecursive

Given a deep enough bup tree the current recursive version can exceed
the default Python stack limit, resulting in an error like this:

  RuntimeError: maximum recursion depth exceeded in cmp

Rewrite the function as an iteration, and explicitly manage the pending
items as a list on the heap.

Thanks to axion for reporting the problem.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/git.py