[Python-checkins] cpython (3.2): Issue #14829: Fix bisect and range() indexing with large indices (>= 2 ** 32)

antoine.pitrou python-checkins at python.org
Wed May 16 14:42:01 CEST 2012


http://hg.python.org/cpython/rev/888f5f3bfcb6
changeset:   76990:888f5f3bfcb6
branch:      3.2
parent:      76983:57936bd91bcf
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Wed May 16 14:37:54 2012 +0200
summary:
  Issue #14829: Fix bisect and range() indexing with large indices (>= 2 ** 32) under 64-bit Windows.

files:
  Misc/NEWS               |  3 +++
  Modules/_bisectmodule.c |  3 ++-
  Objects/rangeobject.c   |  2 +-
  3 files changed, 6 insertions(+), 2 deletions(-)


diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -63,6 +63,9 @@
 Library
 -------
 
+- Issue #14829: Fix bisect and range() indexing with large indices
+  (>= 2 ** 32) under 64-bit Windows.
+
 - Issue #14777: tkinter may return undecoded UTF-8 bytes as a string when
   accessing the Tk clipboard.  Modify clipboad_get() to first request type
   UTF8_STRING when no specific type is requested in an X11 windowing
diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c
--- a/Modules/_bisectmodule.c
+++ b/Modules/_bisectmodule.c
@@ -3,6 +3,7 @@
 Converted to C by Dmitry Vasiliev (dima at hlabs.spb.ru).
 */
 
+#define PY_SSIZE_T_CLEAN
 #include "Python.h"
 
 static Py_ssize_t
@@ -192,7 +193,7 @@
         if (PyList_Insert(list, index, item) < 0)
             return NULL;
     } else {
-        result = PyObject_CallMethod(list, "insert", "iO", index, item);
+        result = PyObject_CallMethod(list, "insert", "nO", index, item);
         if (result == NULL)
             return NULL;
         Py_DECREF(result);
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -307,7 +307,7 @@
 static PyObject *
 range_item(rangeobject *r, Py_ssize_t i)
 {
-    PyObject *res, *arg = PyLong_FromLong(i);
+    PyObject *res, *arg = PyLong_FromSsize_t(i);
     if (!arg) {
         return NULL;
     }

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list