summaryrefslogtreecommitdiff
path: root/Modules/arraymodule.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-11-14 01:27:12 +0100
committerVictor Stinner <victor.stinner@gmail.com>2013-11-14 01:27:12 +0100
commitb1d5242112236867eeeb07c0aa25916179efa016 (patch)
tree03cadf96cba11422c17cb2948be7f5b4dfddf078 /Modules/arraymodule.c
parente3793e29c48d453a1e6fd0dcf96a33a4a08141db (diff)
downloadcpython-b1d5242112236867eeeb07c0aa25916179efa016.tar.gz
Issue #19437: Fix array.buffer_info(), handle PyLong_FromVoidPtr() and
PyLong_FromLong() failure
Diffstat (limited to 'Modules/arraymodule.c')
-rw-r--r--Modules/arraymodule.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 75b31f5b5e..3466064a3d 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1133,13 +1133,25 @@ Insert a new item x into the array before position i.");
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, PyLong_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_FromLong((long)(Py_SIZE(self)));
+ if (v == NULL) {
+ Py_DECREF(retval);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(retval, 1, v);
return retval;
}