Comments
Patch
@@ -222,13 +222,8 @@
PyObject_Del(self);
}
-static PyObject *lmiter_iternext(PyObject *o)
+static line *lmiter_nextline(lmIter *self)
{
- size_t pl;
- line *l;
- Py_ssize_t consumed;
- PyObject *path = NULL, *hash = NULL, *flags = NULL;
- lmIter *self = (lmIter *)o;
do {
self->pos++;
if (self->pos >= self->m->numlines) {
@@ -236,7 +231,19 @@
}
/* skip over deleted manifest entries */
} while (self->m->lines[self->pos].deleted);
- l = self->m->lines + self->pos;
+ return self->m->lines + self->pos;
+}
+
+static PyObject *lmiter_iternext(PyObject *o)
+{
+ size_t pl;
+ line *l;
+ Py_ssize_t consumed;
+ PyObject *path = NULL, *hash = NULL, *flags = NULL;
+ l = lmiter_nextline((lmIter *)o);
+ if (!l) {
+ return NULL;
+ }
pl = pathlen(l);
path = PyString_FromStringAndSize(l->start, pl);
hash = nodeof(l);