strip: access bookmark before getting a reference to changelog stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Thu, 01 Aug 2019 16:22:47 +0200
branchstable
changeset 42681 a1f10edcf6a6
parent 42680 90d8a2a42d5c
child 42682 e0cf09bc35ef
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)
mercurial/repair.py
--- 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