summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core')
-rw-r--r--numpy/core/code_generators/genapi.py11
-rw-r--r--numpy/core/code_generators/numpy_api.py18
-rw-r--r--numpy/core/src/multiarray/convert.c6
-rw-r--r--numpy/core/src/multiarray/convert_datatype.c6
-rw-r--r--numpy/core/src/multiarray/ctors.c23
-rw-r--r--numpy/core/src/multiarray/methods.c24
-rw-r--r--numpy/core/src/multiarray/scalarapi.c8
7 files changed, 75 insertions, 21 deletions
diff --git a/numpy/core/code_generators/genapi.py b/numpy/core/code_generators/genapi.py
index b401ee6a5..68ae30d5b 100644
--- a/numpy/core/code_generators/genapi.py
+++ b/numpy/core/code_generators/genapi.py
@@ -92,17 +92,6 @@ class StealRef:
return 'NPY_STEALS_REF_TO_ARG(%d)' % self.arg
-class NonNull:
- def __init__(self, arg):
- self.arg = arg # counting from 1
-
- def __str__(self):
- try:
- return ' '.join('NPY_GCC_NONNULL(%d)' % x for x in self.arg)
- except TypeError:
- return 'NPY_GCC_NONNULL(%d)' % self.arg
-
-
class Function:
def __init__(self, name, return_type, args, doc=''):
self.name = name
diff --git a/numpy/core/code_generators/numpy_api.py b/numpy/core/code_generators/numpy_api.py
index d12d62d8f..7ec81d4c6 100644
--- a/numpy/core/code_generators/numpy_api.py
+++ b/numpy/core/code_generators/numpy_api.py
@@ -13,7 +13,7 @@ When adding a function, make sure to use the next integer not used as an index
exception, so it should hopefully not get unnoticed).
"""
-from code_generators.genapi import StealRef, NonNull
+from code_generators.genapi import StealRef
# index, type
multiarray_global_vars = {
@@ -92,7 +92,7 @@ multiarray_funcs_api = {
'PyArray_TypeObjectFromType': (46,),
'PyArray_Zero': (47,),
'PyArray_One': (48,),
- 'PyArray_CastToType': (49, StealRef(2), NonNull(2)),
+ 'PyArray_CastToType': (49, StealRef(2)),
'PyArray_CastTo': (50,),
'PyArray_CastAnyTo': (51,),
'PyArray_CanCastSafely': (52,),
@@ -120,15 +120,15 @@ multiarray_funcs_api = {
'PyArray_FromBuffer': (74,),
'PyArray_FromIter': (75, StealRef(2)),
'PyArray_Return': (76, StealRef(1)),
- 'PyArray_GetField': (77, StealRef(2), NonNull(2)),
- 'PyArray_SetField': (78, StealRef(2), NonNull(2)),
+ 'PyArray_GetField': (77, StealRef(2)),
+ 'PyArray_SetField': (78, StealRef(2)),
'PyArray_Byteswap': (79,),
'PyArray_Resize': (80,),
'PyArray_MoveInto': (81,),
'PyArray_CopyInto': (82,),
'PyArray_CopyAnyInto': (83,),
'PyArray_CopyObject': (84,),
- 'PyArray_NewCopy': (85, NonNull(1)),
+ 'PyArray_NewCopy': (85,),
'PyArray_ToList': (86,),
'PyArray_ToString': (87,),
'PyArray_ToFile': (88,),
@@ -136,8 +136,8 @@ multiarray_funcs_api = {
'PyArray_Dumps': (90,),
'PyArray_ValidType': (91,),
'PyArray_UpdateFlags': (92,),
- 'PyArray_New': (93, NonNull(1)),
- 'PyArray_NewFromDescr': (94, StealRef(2), NonNull([1, 2])),
+ 'PyArray_New': (93,),
+ 'PyArray_NewFromDescr': (94, StealRef(2)),
'PyArray_DescrNew': (95,),
'PyArray_DescrNewFromType': (96,),
'PyArray_GetPriority': (97,),
@@ -318,7 +318,7 @@ multiarray_funcs_api = {
'PyArray_CanCastArrayTo': (274,),
'PyArray_CanCastTypeTo': (275,),
'PyArray_EinsteinSum': (276,),
- 'PyArray_NewLikeArray': (277, StealRef(3), NonNull(1)),
+ 'PyArray_NewLikeArray': (277, StealRef(3)),
'PyArray_GetArrayParamsFromObject': (278,),
'PyArray_ConvertClipmodeSequence': (279,),
'PyArray_MatrixProduct2': (280,),
@@ -344,7 +344,7 @@ multiarray_funcs_api = {
'PyDataMem_NEW_ZEROED': (299,),
# End 1.8 API
# End 1.9 API
- 'PyArray_CheckAnyScalarExact': (300, NonNull(1)),
+ 'PyArray_CheckAnyScalarExact': (300,),
# End 1.10 API
'PyArray_MapIterArrayCopyIfOverlap': (301,),
# End 1.13 API
diff --git a/numpy/core/src/multiarray/convert.c b/numpy/core/src/multiarray/convert.c
index 2f68db07c..630253e38 100644
--- a/numpy/core/src/multiarray/convert.c
+++ b/numpy/core/src/multiarray/convert.c
@@ -544,6 +544,12 @@ PyArray_NewCopy(PyArrayObject *obj, NPY_ORDER order)
{
PyArrayObject *ret;
+ if (obj == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "obj is NULL in PyArray_NewCopy");
+ return NULL;
+ }
+
ret = (PyArrayObject *)PyArray_NewLikeArray(obj, order, NULL, 1);
if (ret == NULL) {
return NULL;
diff --git a/numpy/core/src/multiarray/convert_datatype.c b/numpy/core/src/multiarray/convert_datatype.c
index 09a92b33c..5387a0970 100644
--- a/numpy/core/src/multiarray/convert_datatype.c
+++ b/numpy/core/src/multiarray/convert_datatype.c
@@ -245,6 +245,12 @@ PyArray_CastToType(PyArrayObject *arr, PyArray_Descr *dtype, int is_f_order)
{
PyObject *out;
+ if (dtype == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "dtype is NULL in PyArray_CastToType");
+ return NULL;
+ }
+
Py_SETREF(dtype, PyArray_AdaptDescriptorToArray(arr, (PyObject *)dtype));
if (dtype == NULL) {
return NULL;
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c
index 6991bba65..f16840d30 100644
--- a/numpy/core/src/multiarray/ctors.c
+++ b/numpy/core/src/multiarray/ctors.c
@@ -961,6 +961,18 @@ PyArray_NewFromDescr(
int nd, npy_intp const *dims, npy_intp const *strides, void *data,
int flags, PyObject *obj)
{
+ if (subtype == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "subtype is NULL in PyArray_NewFromDescr");
+ return NULL;
+ }
+
+ if (descr == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "descr is NULL in PyArray_NewFromDescr");
+ return NULL;
+ }
+
return PyArray_NewFromDescrAndBase(
subtype, descr,
nd, dims, strides, data,
@@ -1113,6 +1125,11 @@ NPY_NO_EXPORT PyObject *
PyArray_NewLikeArray(PyArrayObject *prototype, NPY_ORDER order,
PyArray_Descr *dtype, int subok)
{
+ if (prototype == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "prototype is NULL in PyArray_NewLikeArray");
+ return NULL;
+ }
return PyArray_NewLikeArrayWithShape(prototype, order, dtype, -1, NULL, subok);
}
@@ -1128,6 +1145,12 @@ PyArray_New(
PyArray_Descr *descr;
PyObject *new;
+ if (subtype == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "subtype is NULL in PyArray_New");
+ return NULL;
+ }
+
descr = PyArray_DescrFromType(type_num);
if (descr == NULL) {
return NULL;
diff --git a/numpy/core/src/multiarray/methods.c b/numpy/core/src/multiarray/methods.c
index 2edbc23ae..09b094171 100644
--- a/numpy/core/src/multiarray/methods.c
+++ b/numpy/core/src/multiarray/methods.c
@@ -379,6 +379,18 @@ PyArray_GetField(PyArrayObject *self, PyArray_Descr *typed, int offset)
static PyObject *checkfunc = NULL;
int self_elsize, typed_elsize;
+ if (self == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "self is NULL in PyArray_GetField");
+ return NULL;
+ }
+
+ if (typed == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "typed is NULL in PyArray_GetField");
+ return NULL;
+ }
+
/* check that we are not reinterpreting memory containing Objects. */
if (_may_have_objects(PyArray_DESCR(self)) || _may_have_objects(typed)) {
npy_cache_import("numpy.core._internal", "_getfield_is_safe",
@@ -457,6 +469,18 @@ PyArray_SetField(PyArrayObject *self, PyArray_Descr *dtype,
PyObject *ret = NULL;
int retval = 0;
+ if (self == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "self is NULL in PyArray_SetField");
+ return -1;
+ }
+
+ if (dtype == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "dtype is NULL in PyArray_SetField");
+ return -1;
+ }
+
if (PyArray_FailUnlessWriteable(self, "assignment destination") < 0) {
Py_DECREF(dtype);
return -1;
diff --git a/numpy/core/src/multiarray/scalarapi.c b/numpy/core/src/multiarray/scalarapi.c
index edbe5955c..48d86caf1 100644
--- a/numpy/core/src/multiarray/scalarapi.c
+++ b/numpy/core/src/multiarray/scalarapi.c
@@ -182,11 +182,17 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
}
/*NUMPY_API
- * return true an object is exactly a numpy scalar
+ * return 1 if an object is exactly a numpy scalar
*/
NPY_NO_EXPORT int
PyArray_CheckAnyScalarExact(PyObject * obj)
{
+ if (obj == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "obj is NULL in PyArray_CheckAnyScalarExact");
+ return 0;
+ }
+
return is_anyscalar_exact(obj);
}