Skip to content

Commit cb60cf6

Browse files
committed
error check, add tp_traverse to flagsobject
1 parent d82d3a0 commit cb60cf6

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

numpy/core/src/multiarray/flagsobject.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,15 @@ arrayflags_new_impl(HPyContext *ctx, HPy self, const HPy *args, HPy_ssize_t narg
900900
return HPyArray_NewFlagsObject(ctx, self, arg);
901901
}
902902

903+
HPyDef_SLOT(arrayflags_traverse, HPy_tp_traverse)
904+
static int
905+
arrayflags_traverse_impl(void *self, HPyFunc_visitproc visit, void *arg)
906+
{
907+
PyArrayFlagsObject *flags = (PyArrayFlagsObject *)self;
908+
HPy_VISIT(&flags->arr);
909+
return 0;
910+
}
911+
903912
/*
904913
static PyType_Slot arrayflags_slots[] = {
905914
//{Py_tp_str, arrayflags_print},
@@ -929,6 +938,7 @@ static HPyDef *arrayflags_defines[] = {
929938
&arrayflags_carray,
930939
&arrayflags_farray,
931940
&arrayflags_num,
941+
&arrayflags_traverse,
932942
NULL
933943
};
934944

numpy/core/src/multiarray/scalarapi.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,12 @@ HPyArray_FromScalar(HPyContext *ctx, HPy h_scalar, /*PyArray_Descr*/ HPy h_outco
559559
}
560560
else {
561561
char *memptr = hpy_scalar_value(ctx, h_scalar, typecode);
562+
if (memptr == NULL)
563+
{
564+
HPy_Close(ctx, h_r);
565+
HPy_Close(ctx, h_typecode);
566+
return HPy_NULL;
567+
}
562568

563569
memcpy(PyArray_DATA(r), memptr, typecode->elsize);
564570
if (PyDataType_FLAGCHK(typecode, NPY_ITEM_HASOBJECT)) {

0 commit comments

Comments
 (0)