changeset 38886:f3d394ea17db

index: handle index[-1] as nullid more explicitly I find it more intuitive to check if "pos == -1" than to first add the index length (which includes one extra item for the nullid) and compare that to "length - 1". However, because test-parseindex2.py compares the whole index (up to len(index)-1), we need to also preserve that other check for a little while more. I'll remove it soon. Differential Revision: https://phab.mercurial-scm.org/D4018
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 20 Jul 2018 09:53:54 -0700
parents f738c502e43b
children c0d411ea6639
files mercurial/cext/revlog.c mercurial/pure/parsers.py
diffstat 2 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cext/revlog.c	Fri Jul 20 22:26:28 2018 -0700
+++ b/mercurial/cext/revlog.c	Fri Jul 20 09:53:54 2018 -0700
@@ -158,6 +158,11 @@
 	Py_ssize_t length = index_length(self);
 	PyObject *entry;
 
+	if (pos == -1 || pos == length - 1) {
+		Py_INCREF(nullentry);
+		return nullentry;
+	}
+
 	if (pos < 0)
 		pos += length;
 
@@ -166,11 +171,6 @@
 		return NULL;
 	}
 
-	if (pos == length - 1) {
-		Py_INCREF(nullentry);
-		return nullentry;
-	}
-
 	if (pos >= self->length - 1) {
 		PyObject *obj;
 		obj = PyList_GET_ITEM(self->added, pos - self->length + 1);
--- a/mercurial/pure/parsers.py	Fri Jul 20 22:26:28 2018 -0700
+++ b/mercurial/pure/parsers.py	Fri Jul 20 09:53:54 2018 -0700
@@ -55,9 +55,9 @@
         return i
 
     def __getitem__(self, i):
+        if i == -1 or i == len(self) - 1:
+            return (0, 0, 0, -1, -1, -1, -1, nullid)
         i = self._fix_index(i)
-        if i == len(self) - 1:
-            return (0, 0, 0, -1, -1, -1, -1, nullid)
         if i >= self._lgt:
             return self._extra[i - self._lgt]
         index = self._calculate_index(i)