[PATCH 2 of 5] lazymanifest: simplify cleanup at end of iteration

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


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1426105596 25200
#      Wed Mar 11 13:26:36 2015 -0700
# Node ID 7daaf234ddc08ee8dd171a6c2d3347e0caf1632e
# Parent  0709db5b7ee275833b41b89feab59625dca28c7a
lazymanifest: simplify cleanup at end of iteration

When the iterator has been exhausted, there is nothing to clean up, so
return early and simplify the remaining code.

diff -r 0709db5b7ee2 -r 7daaf234ddc0 mercurial/manifest.c
--- a/mercurial/manifest.c	Wed Mar 11 08:28:56 2015 -0700
+++ b/mercurial/manifest.c	Wed Mar 11 13:26:36 2015 -0700
@@ -227,12 +227,12 @@
 	size_t pl;
 	line *l;
 	Py_ssize_t consumed;
-	PyObject *ret = NULL, *path = NULL, *hash = NULL, *flags = NULL;
+	PyObject *path = NULL, *hash = NULL, *flags = NULL;
 	lmIter *self = (lmIter *)o;
 	do {
 		self->pos++;
 		if (self->pos >= self->m->numlines) {
-			goto bail;
+			return NULL;
 		}
 		/* skip over deleted manifest entries */
 	} while (self->m->lines[self->pos].deleted);
@@ -243,15 +243,13 @@
 	consumed = pl + 41;
 	flags = PyString_FromStringAndSize(l->start + consumed,
 									   l->len - consumed - 1);
-	if (!flags) {
-		goto bail;
+	if (flags) {
+		return PyTuple_Pack(3, path, hash, flags);
+	} else {
+		Py_XDECREF(path);
+		Py_XDECREF(hash);
+		return NULL;
 	}
-	ret = PyTuple_Pack(3, path, hash, flags);
- bail:
-	Py_XDECREF(path);
-	Py_XDECREF(hash);
-	Py_XDECREF(flags);
-	return ret;
 }
 
 static PyTypeObject lazymanifestIterator = {


More information about the Mercurial-devel mailing list