diff --git a/Misc/NEWS.d/next/Tests/2020-06-23-12-02-45.bpo-41085.JZKsyz.rst b/Misc/NEWS.d/next/Tests/2020-06-23-12-02-45.bpo-41085.JZKsyz.rst new file mode 100644 index 00000000000..463dffdd653 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-06-23-12-02-45.bpo-41085.JZKsyz.rst @@ -0,0 +1,2 @@ +Fix integer overflow in the :meth:`array.array.index` method on 64-bit Windows +for index larger than ``2**31``. diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 8f12c616463..2d498c7e829 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1130,7 +1130,7 @@ array_array_index(arrayobject *self, PyObject *v) cmp = PyObject_RichCompareBool(selfi, v, Py_EQ); Py_DECREF(selfi); if (cmp > 0) { - return PyLong_FromLong((long)i); + return PyLong_FromSsize_t(i); } else if (cmp < 0) return NULL;