]> granicus.if.org Git - python/commitdiff
Issue #6985: number of range() items should be constrained to lie
authorMark Dickinson <dickinsm@gmail.com>
Thu, 3 Dec 2009 12:08:56 +0000 (12:08 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Thu, 3 Dec 2009 12:08:56 +0000 (12:08 +0000)
in a Py_ssize_t, not an int.

Python/bltinmodule.c

index 80fc9b42448b1e7510123af6f68eeb89b1d58dc1..b201aaf7877511043cab1c3ff27e7f4deb46063f 100644 (file)
@@ -1754,7 +1754,7 @@ handle_range_longs(PyObject *self, PyObject *args)
        PyObject *curnum = NULL;
        PyObject *v = NULL;
        long bign;
-       int i, n;
+       Py_ssize_t i, n;
        int cmp_result;
 
        PyObject *zero = PyLong_FromLong(0);
@@ -1834,7 +1834,7 @@ handle_range_longs(PyObject *self, PyObject *args)
                Py_DECREF(neg_istep);
        }
 
-       n = (int)bign;
+       n = (Py_ssize_t)bign;
        if (bign < 0 || (long)n != bign) {
                PyErr_SetString(PyExc_OverflowError,
                                "range() result has too many items");
@@ -1914,7 +1914,7 @@ builtin_range(PyObject *self, PyObject *args)
 {
        long ilow = 0, ihigh = 0, istep = 1;
        long bign;
-       int i, n;
+       Py_ssize_t i, n;
 
        PyObject *v;
 
@@ -1943,7 +1943,7 @@ builtin_range(PyObject *self, PyObject *args)
                bign = get_len_of_range(ilow, ihigh, istep);
        else
                bign = get_len_of_range(ihigh, ilow, -istep);
-       n = (int)bign;
+       n = (Py_ssize_t)bign;
        if (bign < 0 || (long)n != bign) {
                PyErr_SetString(PyExc_OverflowError,
                                "range() result has too many items");