diff -r 05db41701ece -r efbbc2f9121e mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c Mon Nov 07 22:12:59 2022 -0500 +++ b/mercurial/cext/revlog.c Sun Nov 06 16:56:23 2022 -0500 @@ -1446,16 +1446,25 @@ static PyObject *index_findsnapshots(indexObject *self, PyObject *args) { Py_ssize_t start_rev; + Py_ssize_t end_rev; PyObject *cache; Py_ssize_t base; Py_ssize_t rev; PyObject *key = NULL; PyObject *value = NULL; const Py_ssize_t length = index_length(self); - if (!PyArg_ParseTuple(args, "O!n", &PyDict_Type, &cache, &start_rev)) { + if (!PyArg_ParseTuple(args, "O!nn", &PyDict_Type, &cache, &start_rev, + &end_rev)) { return NULL; } - for (rev = start_rev; rev < length; rev++) { + end_rev += 1; + if (end_rev > length) { + end_rev = length; + } + if (start_rev < 0) { + start_rev = 0; + } + for (rev = start_rev; rev < end_rev; rev++) { int issnap; PyObject *allvalues = NULL; issnap = index_issnapshotrev(self, rev);