[PATCH 4 of 5] lazymanifest: extract function for iterating to next line

Martin von Zweigbergk martinvonz at google.com
Wed Mar 11 18:14:26 CDT 2015


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1426104926 25200
#      Wed Mar 11 13:15:26 2015 -0700
# Node ID d503a9f83866a27df8f88fbd8ea1297d8dfc3327
# Parent  91e8436e566b285254d11aec6dc6694ae50ff6e8
lazymanifest: extract function for iterating to next line

This will soon be reused by keys iterator.

diff -r 91e8436e566b -r d503a9f83866 mercurial/manifest.c
--- a/mercurial/manifest.c	Wed Mar 11 13:35:34 2015 -0700
+++ b/mercurial/manifest.c	Wed Mar 11 13:15:26 2015 -0700
@@ -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);


More information about the Mercurial-devel mailing list