From patchwork Wed Mar 11 23:14:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,5] lazymanifest: simplify cleanup at end of iteration From: Martin von Zweigbergk X-Patchwork-Id: 8012 Message-Id: <7daaf234ddc08ee8dd17.1426115664@martinvonz.mtv.corp.google.com> To: mercurial-devel@selenic.com Cc: Augie Fackler Date: Wed, 11 Mar 2015 16:14:24 -0700 # HG changeset patch # User Martin von Zweigbergk # 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 = {