[Python-checkins] cpython (2.7): Fixed integer overflow and handled MemoryError in array.buffer_info().
serhiy.storchaka
python-checkins at python.org
Thu Jun 23 17:01:04 EDT 2016
https://hg.python.org/cpython/rev/14a905f6b6c6
changeset: 102142:14a905f6b6c6
branch: 2.7
parent: 102137:c91007ab3fda
user: Serhiy Storchaka <storchaka at gmail.com>
date: Fri Jun 24 00:00:32 2016 +0300
summary:
Fixed integer overflow and handled MemoryError in array.buffer_info().
files:
Modules/arraymodule.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1067,13 +1067,25 @@
static PyObject *
array_buffer_info(arrayobject *self, PyObject *unused)
{
- PyObject* retval = NULL;
+ PyObject *retval = NULL, *v;
+
retval = PyTuple_New(2);
if (!retval)
return NULL;
- PyTuple_SET_ITEM(retval, 0, PyLong_FromVoidPtr(self->ob_item));
- PyTuple_SET_ITEM(retval, 1, PyInt_FromLong((long)(Py_SIZE(self))));
+ v = PyLong_FromVoidPtr(self->ob_item);
+ if (v == NULL) {
+ Py_DECREF(retval);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(retval, 0, v);
+
+ v = PyLong_FromSsize_t(Py_SIZE(self));
+ if (v == NULL) {
+ Py_DECREF(retval);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(retval, 1, v);
return retval;
}
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list