diff mercurial/revlog.py @ 44803:affe0fb42250 stable

nodemap: fix validity checking when revlog is too short We cannot check the nodeid of a revision that is not even there. We add a simple fix and simple test.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 13 Jun 2020 11:57:58 +0200
parents 64e2f603de9d
children cc2572923ea3
line wrap: on
line diff
--- a/mercurial/revlog.py	Tue Jun 09 05:24:45 2020 +0200
+++ b/mercurial/revlog.py	Sat Jun 13 11:57:58 2020 +0200
@@ -651,7 +651,10 @@
                 nodemap_data = nodemaputil.persisted_data(self)
                 if nodemap_data is not None:
                     docket = nodemap_data[0]
-                    if d[0][docket.tip_rev][7] == docket.tip_node:
+                    if (
+                        len(d[0]) > docket.tip_rev
+                        and d[0][docket.tip_rev][7] == docket.tip_node
+                    ):
                         # no changelog tampering
                         self._nodemap_docket = docket
                         index.update_nodemap_data(*nodemap_data)