summaryrefslogtreecommitdiffstats
path: root/Objects/iterobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/iterobject.c')
-rw-r--r--Objects/iterobject.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/Objects/iterobject.c b/Objects/iterobject.c
index a407dd5..25e4e11 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;
}