comparison mercurial/revlog.py @ 44954: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
comparison
equal deleted inserted replaced
44924:6c8384afbf77 44954:affe0fb42250
649 ) 649 )
650 if use_nodemap: 650 if use_nodemap:
651 nodemap_data = nodemaputil.persisted_data(self) 651 nodemap_data = nodemaputil.persisted_data(self)
652 if nodemap_data is not None: 652 if nodemap_data is not None:
653 docket = nodemap_data[0] 653 docket = nodemap_data[0]
654 if d[0][docket.tip_rev][7] == docket.tip_node: 654 if (
655 len(d[0]) > docket.tip_rev
656 and d[0][docket.tip_rev][7] == docket.tip_node
657 ):
655 # no changelog tampering 658 # no changelog tampering
656 self._nodemap_docket = docket 659 self._nodemap_docket = docket
657 index.update_nodemap_data(*nodemap_data) 660 index.update_nodemap_data(*nodemap_data)
658 except (ValueError, IndexError): 661 except (ValueError, IndexError):
659 raise error.RevlogError( 662 raise error.RevlogError(