Comments
Patch
@@ -1049,6 +1049,25 @@ static inline bool index_segment_span(in
return 1;
}
+/* returns revs[startidx:endidx] without empty trailing revs */
+static bool trim_endidx(indexObject *self, Py_ssize_t *revs,
+ Py_ssize_t startidx, Py_ssize_t endidx,
+ Py_ssize_t *result)
+{
+ long length;
+ while (endidx > 1 && endidx > startidx) {
+ if (!index_get_length(self, revs[endidx - 1], &length)) {
+ return 0;
+ }
+ if (length != 0) {
+ break;
+ }
+ endidx -= 1;
+ }
+ *result = endidx;
+ return 1;
+}
+
static inline int nt_level(const char *node, Py_ssize_t level)
{
int v = node[level >> 1];