Skip to content

Commit

Permalink
Merge pull request #20617 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 17, 2021
2 parents 1b5b587 + fae64e3 commit a7accb7
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions numpy/core/src/multiarray/multiarraymodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1478,6 +1478,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 a7accb7

Please sign in to comment.