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;