summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/src/multiarray/arraytypes.c.src9
-rw-r--r--numpy/core/src/multiarray/ctors.c9
-rw-r--r--numpy/core/src/multiarray/descriptor.c18
-rw-r--r--numpy/core/src/multiarray/getset.c9
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.c21
-rw-r--r--numpy/core/src/multiarray/scalarapi.c12
-rw-r--r--numpy/core/src/multiarray/scalartypes.c.src8
-rw-r--r--numpy/core/src/multiarray/usertypes.c3
-rw-r--r--numpy/core/src/umath/ufunc_object.c12
-rw-r--r--numpy/core/src/umath/umathmodule.c.src3
10 files changed, 98 insertions, 6 deletions
diff --git a/numpy/core/src/multiarray/arraytypes.c.src b/numpy/core/src/multiarray/arraytypes.c.src
index 3a9356edf..992164f06 100644
--- a/numpy/core/src/multiarray/arraytypes.c.src
+++ b/numpy/core/src/multiarray/arraytypes.c.src
@@ -3533,10 +3533,17 @@ _init_datetime_descr(PyArray_Descr *descr)
dt_data->den = 1;
dt_data->events = 1;
+/* FIXME
+ * There is no error check here and no way to indicate an error
+ * until the metadata turns up NULL.
+ */
#if defined(NPY_PY3K)
cobj = PyCapsule_New((void *)dt_data, NULL, simple_capsule_dtor);
+ if (cobj == NULL) {
+ PyErr_Clear();
+ }
#else
- cobj = PyCObject_FromVoidPtr((void *)dt_data, _pya_free);
+ cobj = PyCObject_FromVoidPtr((void *)dt_data, simple_capsule_dtor);
#endif
descr->metadata = PyDict_New();
PyDict_SetItemString(descr->metadata, NPY_METADATA_DTSTR, cobj);
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c
index 844aacd71..745cfdb4d 100644
--- a/numpy/core/src/multiarray/ctors.c
+++ b/numpy/core/src/multiarray/ctors.c
@@ -1144,6 +1144,9 @@ discover_depth(PyObject *s, int max, int stop_at_string, int stop_at_tuple)
if (PyCapsule_CheckExact(e)) {
PyArrayInterface *inter;
inter = (PyArrayInterface *)PyCapsule_GetPointer(e, NULL);
+ if (inter == NULL) {
+ PyErr_Clear();
+ }
#else
if (PyCObject_Check(e)) {
PyArrayInterface *inter;
@@ -1576,6 +1579,9 @@ PyArray_NewFromDescr(PyTypeObject *subtype, PyArray_Descr *descr, int nd,
/* A C-function is stored here */
PyArray_FinalizeFunc *cfunc;
cfunc = PyCapsule_GetPointer(func, NULL);
+ if (cfunc == NULL) {
+ PyErr_Clear();
+ }
#else
if PyCObject_Check(func) {
/* A C-function is stored here */
@@ -2127,6 +2133,9 @@ PyArray_FromStructInterface(PyObject *input)
goto fail;
}
inter = PyCapsule_GetPointer(attr, NULL);
+ if (inter == NULL) {
+ PyErr_Clear();
+ }
#else
if (!PyCObject_Check(attr)) {
goto fail;
diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c
index 9a1e60b0e..3cc2f28ac 100644
--- a/numpy/core/src/multiarray/descriptor.c
+++ b/numpy/core/src/multiarray/descriptor.c
@@ -648,6 +648,9 @@ _get_datetime_tuple_from_cobj(PyObject *cobj)
#if defined(NPY_PY3K)
dt_data = PyCapsule_GetPointer(cobj, NULL);
+ if (dt_data == NULL) {
+ PyErr_Clear();
+ }
#else
dt_data = PyCObject_AsVoidPtr(cobj);
#endif
@@ -669,6 +672,7 @@ static PyObject *
_convert_datetime_tuple_to_cobj(PyObject *tuple)
{
PyArray_DatetimeMetaData *dt_data;
+ PyObject *ret;
dt_data = _pya_malloc(sizeof(PyArray_DatetimeMetaData));
dt_data->base = _unit_from_str(
@@ -685,11 +689,18 @@ _convert_datetime_tuple_to_cobj(PyObject *tuple)
}
}
+/* FIXME
+ * There is no error handling here.
+ */
#if defined(NPY_PY3K)
- return PyCapsule_New((void *)dt_data, NULL, simple_capsule_dtor);
+ ret = PyCapsule_New((void *)dt_data, NULL, simple_capsule_dtor);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
#else
- return PyCObject_FromVoidPtr((void *)dt_data, _pya_free);
+ ret = PyCObject_FromVoidPtr((void *)dt_data, simple_capsule_dtor);
#endif
+ return ret;
}
static PyArray_Descr *
@@ -1554,6 +1565,9 @@ _append_to_datetime_typestr(PyArray_Descr *self, PyObject *ret)
tmp = PyDict_GetItemString(self->metadata, NPY_METADATA_DTSTR);
#if defined(NPY_PY3K)
dt_data = PyCapsule_GetPointer(tmp, NULL);
+ if (dt_data == NULL) {
+ PyErr_Clear();
+ }
#else
dt_data = PyCObject_AsVoidPtr(tmp);
#endif
diff --git a/numpy/core/src/multiarray/getset.c b/numpy/core/src/multiarray/getset.c
index 4200569af..211327bfe 100644
--- a/numpy/core/src/multiarray/getset.c
+++ b/numpy/core/src/multiarray/getset.c
@@ -554,7 +554,14 @@ array_struct_get(PyArrayObject *self)
Py_INCREF(self);
#if defined(NPY_PY3K)
ret = PyCapsule_New(inter, NULL, gentype_struct_free);
- PyCapsule_SetContext(ret, self);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ else if (PyCapsule_SetContext(ret, self) != 0) {
+ PyErr_Clear();
+ Py_DECREF(ret);
+ ret = NULL;
+ }
#else
ret = PyCObject_FromVoidPtrAndDesc(inter, self, gentype_struct_free);
#endif
diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c
index 5c707779d..f06c266fe 100644
--- a/numpy/core/src/multiarray/multiarraymodule.c
+++ b/numpy/core/src/multiarray/multiarraymodule.c
@@ -1350,9 +1350,18 @@ _equivalent_units(PyObject *meta1, PyObject *meta2)
return 1;
}
+/* FIXME
+ * There is no err handling here.
+ */
#if defined(NPY_PY3K)
data1 = PyCapsule_GetPointer(cobj1, NULL);
+ if (data1 == NULL) {
+ PyErr_Clear();
+ }
data2 = PyCapsule_GetPointer(cobj2, NULL);
+ if (data2 == NULL) {
+ PyErr_Clear();
+ }
#else
data1 = PyCObject_AsVoidPtr(cobj1);
data2 = PyCObject_AsVoidPtr(cobj2);
@@ -3050,8 +3059,14 @@ PyMODINIT_FUNC initmultiarray(void) {
if (PyType_Ready(&PyArrayFlags_Type) < 0) {
return RETVAL;
}
+/* FIXME
+ * There is no error handling here
+ */
#if defined(NPY_PY3K)
c_api = PyCapsule_New((void *)PyArray_API, NULL, NULL);
+ if (c_api == NULL) {
+ PyErr_Clear();
+ }
#else
c_api = PyCObject_FromVoidPtr((void *)PyArray_API, NULL);
#endif
@@ -3085,8 +3100,14 @@ PyMODINIT_FUNC initmultiarray(void) {
PyDict_SetItemString(d, "METADATA_DTSTR", s);
Py_DECREF(s);
+/* FIXME
+ * There is no error handling here
+ */
#if defined(NPY_PY3K)
s = PyCapsule_New((void *)_datetime_strings, NULL, NULL);
+ if (s == NULL) {
+ PyErr_Clear();
+ }
#else
s = PyCObject_FromVoidPtr((void *)_datetime_strings, NULL);
#endif
diff --git a/numpy/core/src/multiarray/scalarapi.c b/numpy/core/src/multiarray/scalarapi.c
index 5b0ecd2c5..74193f4f0 100644
--- a/numpy/core/src/multiarray/scalarapi.c
+++ b/numpy/core/src/multiarray/scalarapi.c
@@ -536,8 +536,11 @@ PyArray_DescrFromScalar(PyObject *sc)
}
#if defined(NPY_PY3K)
cobj = PyCapsule_New((void *)dt_data, NULL, simple_capsule_dtor);
+ if (cobj == NULL) {
+ PyErr_Clear();
+ }
#else
- cobj = PyCObject_FromVoidPtr((void *)dt_data, _pya_free);
+ cobj = PyCObject_FromVoidPtr((void *)dt_data, simple_capsule_dtor);
#endif
/* Add correct meta-data to the data-type */
@@ -670,8 +673,15 @@ PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base)
PyObject *cobj;
PyArray_DatetimeMetaData *dt_data;
cobj = PyDict_GetItemString(descr->metadata, NPY_METADATA_DTSTR);
+
+/* FIXME
+ * There is no error handling here.
+ */
#if defined(NPY_PY3K)
dt_data = PyCapsule_GetPointer(cobj, NULL);
+ if (dt_data == NULL) {
+ PyErr_Clear();
+ }
#else
dt_data = PyCObject_AsVoidPtr(cobj);
#endif
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src
index 96a3abeed..173416b08 100644
--- a/numpy/core/src/multiarray/scalartypes.c.src
+++ b/numpy/core/src/multiarray/scalartypes.c.src
@@ -859,7 +859,13 @@ gentype_struct_get(PyObject *self)
#if defined(NPY_PY3K)
ret = PyCapsule_New(inter, NULL, gentype_struct_free);
- PyCapsule_SetContext(ret, arr);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ else if (PyCapsule_SetContext(ret, arr) != 0) {
+ PyErr_Clear();
+ ret == NULL;
+ }
#else
ret = PyCObject_FromVoidPtrAndDesc(inter, arr, gentype_struct_free);
#endif
diff --git a/numpy/core/src/multiarray/usertypes.c b/numpy/core/src/multiarray/usertypes.c
index 07bca8b92..5105c48a6 100644
--- a/numpy/core/src/multiarray/usertypes.c
+++ b/numpy/core/src/multiarray/usertypes.c
@@ -208,6 +208,9 @@ PyArray_RegisterCastFunc(PyArray_Descr *descr, int totype,
}
#if defined(NPY_PY3K)
cobj = PyCapsule_New((void *)castfunc, NULL, NULL);
+ if (cobj == NULL) {
+ PyErr_Clear();
+ }
#else
cobj = PyCObject_FromVoidPtr((void *)castfunc, NULL);
#endif
diff --git a/numpy/core/src/umath/ufunc_object.c b/numpy/core/src/umath/ufunc_object.c
index e2479ed50..843e6abde 100644
--- a/numpy/core/src/umath/ufunc_object.c
+++ b/numpy/core/src/umath/ufunc_object.c
@@ -374,6 +374,9 @@ _find_matching_userloop(PyObject *obj, int *arg_types,
#if defined(NPY_PY3K)
funcdata = (PyUFunc_Loop1d *)PyCapsule_GetPointer(obj, NULL);
+ if (funcdata == NULL) {
+ PyErr_Clear();
+ }
#else
funcdata = (PyUFunc_Loop1d *)PyCObject_AsVoidPtr(obj);
#endif
@@ -523,6 +526,9 @@ extract_specified_loop(PyUFuncObject *self, int *arg_types,
*/
#if defined(NPY_PY3K)
funcdata = (PyUFunc_Loop1d *)PyCapsule_GetPointer(obj, NULL);
+ if (funcdata == NULL) {
+ PyErr_Clear();
+ }
#else
funcdata = (PyUFunc_Loop1d *)PyCObject_AsVoidPtr(obj);
#endif
@@ -3976,6 +3982,9 @@ PyUFunc_RegisterLoopForType(PyUFuncObject *ufunc,
if (cobj == NULL) {
#if defined(NPY_PY3K)
cobj = PyCapsule_New((void *)funcdata, NULL, _loop1d_list_free);
+ if (cobj == NULL) {
+ PyErr_Clear();
+ }
#else
cobj = PyCObject_FromVoidPtr((void *)funcdata, _loop1d_list_free);
#endif
@@ -3998,6 +4007,9 @@ PyUFunc_RegisterLoopForType(PyUFuncObject *ufunc,
*/
#if defined(NPY_PY3K)
current = (PyUFunc_Loop1d *)PyCapsule_GetPointer(cobj, NULL);
+ if (current == NULL) {
+ PyErr_Clear();
+ }
#else
current = (PyUFunc_Loop1d *)PyCObject_AsVoidPtr(cobj);
#endif
diff --git a/numpy/core/src/umath/umathmodule.c.src b/numpy/core/src/umath/umathmodule.c.src
index f105b90bd..39240cec2 100644
--- a/numpy/core/src/umath/umathmodule.c.src
+++ b/numpy/core/src/umath/umathmodule.c.src
@@ -307,6 +307,9 @@ PyMODINIT_FUNC initumath(void)
#if defined(NPY_PY3K)
c_api = PyCapsule_New((void *)PyUFunc_API, NULL, NULL);
+ if (c_api == NULL) {
+ PyErr_Clear();
+ }
#else
c_api = PyCObject_FromVoidPtr((void *)PyUFunc_API, NULL);
#endif