diff mercurial/repair.py @ 42681:a1f10edcf6a6 stable

strip: access bookmark before getting a reference to changelog Bookmark access might invalidate the current changelog (to make sure both are in a reasonable synchronisation state). So we should grab the reference to changelog after we access bookmark. Otherwise we risk using a dead object for the whole strip process. (note: this dead object business probably requires a new layers of checking)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 01 Aug 2019 16:22:47 +0200
parents d811f17090a3
children f59f8a5e9096
line wrap: on
line diff
--- a/mercurial/repair.py	Thu Aug 01 15:59:52 2019 +0200
+++ b/mercurial/repair.py	Thu Aug 01 16:22:47 2019 +0200
@@ -109,6 +109,9 @@
     repo = repo.unfiltered()
     repo.destroying()
     vfs = repo.vfs
+    # load bookmark before changelog to avoid side effect from outdated
+    # changelog (see repo._refreshchangelog)
+    repo._bookmarks
     cl = repo.changelog
 
     # TODO handle undo of merge sets