mercurial/transaction.py
changeset 44097 2f1d6180737f
parent 44056 8e09551206f5
child 44406 baf8c3f944eb
--- 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)