--- a/mercurial/transaction.py Sat Dec 28 12:25:16 2019 -0500
+++ b/mercurial/transaction.py Wed Jan 15 15:47:03 2020 +0100
@@ -506,9 +506,12 @@
self._validator(self) # will raise exception if needed
self._validator = None # Help prevent cycles.
self._generatefiles(group=gengroupprefinalize)
- categories = sorted(self._finalizecallback)
- for cat in categories:
- self._finalizecallback[cat](self)
+ while self._finalizecallback:
+ callbacks = self._finalizecallback
+ self._finalizecallback = {}
+ categories = sorted(callbacks)
+ for cat in categories:
+ callbacks[cat](self)
# Prevent double usage and help clear cycles.
self._finalizecallback = None
self._generatefiles(group=gengrouppostfinalize)