diff options
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/multiarray/arraytypes.c.src | 9 | ||||
-rw-r--r-- | numpy/core/src/multiarray/ctors.c | 9 | ||||
-rw-r--r-- | numpy/core/src/multiarray/descriptor.c | 18 | ||||
-rw-r--r-- | numpy/core/src/multiarray/getset.c | 9 | ||||
-rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.c | 21 | ||||
-rw-r--r-- | numpy/core/src/multiarray/scalarapi.c | 12 | ||||
-rw-r--r-- | numpy/core/src/multiarray/scalartypes.c.src | 8 | ||||
-rw-r--r-- | numpy/core/src/multiarray/usertypes.c | 3 | ||||
-rw-r--r-- | numpy/core/src/umath/ufunc_object.c | 12 | ||||
-rw-r--r-- | numpy/core/src/umath/umathmodule.c.src | 3 |
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 |