diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2012-05-16 12:39:36 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2012-05-16 12:39:36 (GMT) |
commit | b7d033db783b8ca2e4dfe23e348129ed666b6e2b (patch) | |
tree | 4c504d15647a3997d62e8e2da43dc16d5a2791da | |
parent | b84bc7a7ce6649f786b5b3f80e944cb51b332faf (diff) | |
parent | a103b96a80f049f68ccf2dd3d5d7858b26a27e94 (diff) | |
download | cpython-b7d033db783b8ca2e4dfe23e348129ed666b6e2b.zip cpython-b7d033db783b8ca2e4dfe23e348129ed666b6e2b.tar.gz cpython-b7d033db783b8ca2e4dfe23e348129ed666b6e2b.tar.bz2 |
Issue #14829: Fix bisect and range() indexing with large indices (>= 2 ** 32) under 64-bit Windows.
(untested, because of Windows build issues under 3.x)
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_bisectmodule.c | 4 | ||||
-rw-r--r-- | Objects/rangeobject.c | 2 |
3 files changed, 6 insertions, 3 deletions
@@ -34,6 +34,9 @@ Core and Builtins Library ------- +- Issue #14829: Fix bisect and range() indexing with large indices + (>= 2 ** 32) under 64-bit Windows. + - Issue #14732: The _csv module now uses PEP 3121 module initialization. Patch by Robin Schreiber. diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c index 4d0a2e4..faca8cf 100644 --- 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 @@ -195,8 +196,7 @@ insort_left(PyObject *self, PyObject *args, PyObject *kw) return NULL; } else { _Py_IDENTIFIER(insert); - - result = _PyObject_CallMethodId(list, &PyId_insert, "iO", index, item); + result = _PyObject_CallMethodId(list, &PyId_insert, "nO", index, item); if (result == NULL) return NULL; Py_DECREF(result); diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index 99544d6..c47a4ff 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -308,7 +308,7 @@ compute_range_item(rangeobject *r, PyObject *arg) 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; } |