diff Python/bltinmodule.c @ 57550:75e1b8c05f43 legacy-trunk

Issue #6985: number of range() items should be constrained to lie in a Py_ssize_t, not an int.
author Mark Dickinson <dickinsm@gmail.com>
date Thu, 03 Dec 2009 12:08:56 +0000
parents b9b683eedee1
children 20b7deb53d4e
line wrap: on
line diff
--- a/Python/bltinmodule.c	Thu Dec 03 02:52:39 2009 +0000
+++ b/Python/bltinmodule.c	Thu Dec 03 12:08:56 2009 +0000
@@ -1754,7 +1754,7 @@
 	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 @@
 		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 @@
 {
 	long ilow = 0, ihigh = 0, istep = 1;
 	long bign;
-	int i, n;
+	Py_ssize_t i, n;
 
 	PyObject *v;
 
@@ -1943,7 +1943,7 @@
 		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");