# HG changeset patch # User Pierre-Yves David # Date 2019-08-01 14:22:47 # Node ID a1f10edcf6a6054e55577f06414d20d5ba012438 # Parent 90d8a2a42d5c1900c89cf9ce05707454b80d22f6 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) diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -109,6 +109,9 @@ def strip(ui, repo, nodelist, backup=Tru 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