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)
--- 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