changeset 38852:a3dacabd476b

index: don't allow index[len(index)] to mean nullid Now everything else has been cleaned up and we can drop support for getting the nullid from the end of the index (from *past* the end actually, since we reduced the length in the previous patch). Differential Revision: https://phab.mercurial-scm.org/D4023
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 20 Jul 2018 14:36:42 -0700
parents 781b2720d2ac
children 3588e41f796d
files mercurial/cext/revlog.c mercurial/revlog.py tests/test-parseindex2.py
diffstat 3 files changed, 3 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cext/revlog.c	Fri Jul 20 08:10:32 2018 -0700
+++ b/mercurial/cext/revlog.c	Fri Jul 20 14:36:42 2018 -0700
@@ -158,12 +158,12 @@
 	Py_ssize_t length = index_length(self) + 1;
 	PyObject *entry;
 
-	if (pos == -1 || pos == length - 1) {
+	if (pos == -1) {
 		Py_INCREF(nullentry);
 		return nullentry;
 	}
 
-	if (pos < 0 || pos >= length) {
+	if (pos < 0 || pos >= length - 1) {
 		PyErr_SetString(PyExc_IndexError, "revlog index out of range");
 		return NULL;
 	}
--- a/mercurial/revlog.py	Fri Jul 20 08:10:32 2018 -0700
+++ b/mercurial/revlog.py	Fri Jul 20 14:36:42 2018 -0700
@@ -792,7 +792,7 @@
 
 class revlogoldindex(list):
     def __getitem__(self, i):
-        if i == -1 or i == len(self):
+        if i == -1:
             return (0, 0, 0, -1, -1, -1, -1, nullid)
         return list.__getitem__(self, i)
 
--- a/tests/test-parseindex2.py	Fri Jul 20 08:10:32 2018 -0700
+++ b/tests/test-parseindex2.py	Fri Jul 20 14:36:42 2018 -0700
@@ -61,9 +61,6 @@
     e[0] = offset_type(0, type)
     index[0] = tuple(e)
 
-    # add the magic null revision at -1
-    index.append((0, 0, 0, -1, -1, -1, -1, nullid))
-
     return index, cache
 
 data_inlined = (