D4023: index: don't allow index[len(index)] to mean nullid
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Aug 2 00:41:14 EDT 2018
martinvonz updated this revision to Diff 9782.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4023?vs=9723&id=9782
REVISION DETAIL
https://phab.mercurial-scm.org/D4023
AFFECTED FILES
mercurial/cext/revlog.c
mercurial/revlog.py
tests/test-parseindex2.py
CHANGE DETAILS
diff --git a/tests/test-parseindex2.py b/tests/test-parseindex2.py
--- a/tests/test-parseindex2.py
+++ b/tests/test-parseindex2.py
@@ -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 = (
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -791,7 +791,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)
diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c
--- a/mercurial/cext/revlog.c
+++ b/mercurial/cext/revlog.c
@@ -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;
}
To: martinvonz, indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list