Mercurial > cpython-lru_cache-weakref
diff Objects/rangeobject.c @ 54845:f4d84c4f289b 3.0
Merged revisions 73547-73548 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r73547 | mark.dickinson | 2009-06-24 19:36:46 +0100 (Wed, 24 Jun 2009) | 1 line
Issue #6334: Fix buggy internal length calculation in builtin range function
........
r73548 | mark.dickinson | 2009-06-24 20:01:32 +0100 (Wed, 24 Jun 2009) | 1 line
Misc/NEWS entry for r73547
........
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Wed, 24 Jun 2009 19:22:42 +0000 |
| parents | 75c4d3bc6cc8 |
| children | 79a630da8f00 |
line wrap: on
line diff
--- a/Objects/rangeobject.c Tue Jun 23 14:00:11 2009 +0000 +++ b/Objects/rangeobject.c Wed Jun 24 19:22:42 2009 +0000 @@ -581,7 +581,6 @@ { rangeobject *r = (rangeobject *)seq; longrangeiterobject *it; - PyObject *tmp, *len; long lstart, lstop, lstep; assert(PyRange_Check(seq)); @@ -612,15 +611,9 @@ it->len = it->index = NULL; - /* Calculate length: (r->stop - r->start) / r->step */ - tmp = PyNumber_Subtract(r->stop, r->start); - if (!tmp) + it->len = range_length_obj(r); + if (!it->len) goto create_failure; - len = PyNumber_FloorDivide(tmp, r->step); - Py_DECREF(tmp); - if (!len) - goto create_failure; - it->len = len; it->index = PyLong_FromLong(0); if (!it->index) goto create_failure;
