Skip to content

Commit

Permalink
Merge pull request #20618 from charris/backport-20616
Browse files Browse the repository at this point in the history
MAINT: Help boost::python libraries at least not crash
  • Loading branch information
charris committed Dec 18, 2021
2 parents 8c04d2a + c2495e3 commit e559d9a
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions numpy/core/src/multiarray/multiarraymodule.c
Expand Up @@ -1473,6 +1473,24 @@ PyArray_EquivTypes(PyArray_Descr *type1, PyArray_Descr *type2)
if (type1 == type2) {
return 1;
}

if (Py_TYPE(Py_TYPE(type1)) == &PyType_Type) {
/*
* 2021-12-17: This case is nonsense and should be removed eventually!
*
* boost::python has/had a bug effectively using EquivTypes with
* `type(arbitrary_obj)`. That is clearly wrong as that cannot be a
* `PyArray_Descr *`. We assume that `type(type(type(arbitrary_obj))`
* is always in practice `type` (this is the type of the metaclass),
* but for our descriptors, `type(type(descr))` is DTypeMeta.
*
* In that case, we just return False. There is a possibility that
* this actually _worked_ effectively (returning 1 sometimes).
* We ignore that possibility for simplicity; it really is not our bug.
*/
return 0;
}

/*
* Do not use PyArray_CanCastTypeTo because it supports legacy flexible
* dtypes as input.
Expand Down

0 comments on commit e559d9a

Please sign in to comment.