From 7892b1c651d72a5bd08372f40309dec08a7065f0 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Mon, 12 Apr 2004 18:10:01 +0000 Subject: * Add unittests for iterators that report their length * Document the differences between them * Fix corner cases covered by the unittests * Use Py_RETURN_NONE where possible for dictionaries --- Objects/iterobject.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Objects/iterobject.c') diff --git a/Objects/iterobject.c b/Objects/iterobject.c index a407dd597f..25e4e11154 100644 --- a/Objects/iterobject.c +++ b/Objects/iterobject.c @@ -74,8 +74,16 @@ iter_iternext(PyObject *iterator) static int iter_len(seqiterobject *it) { - if (it->it_seq) - return PyObject_Size(it->it_seq) - it->it_index; + int seqsize, len; + + if (it->it_seq) { + seqsize = PySequence_Size(it->it_seq); + if (seqsize == -1) + return -1; + len = seqsize - it->it_index; + if (len >= 0) + return len; + } return 0; } -- cgit v1.2.1