Revert "bpo-40170: PyType_HasFeature() now always calls PyType_GetFlags() (GH-19378)" (GH-21390)

This partially reverts commit 45ec5b99ae.
(cherry picked from commit b26a0db8ea)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2020-07-08 02:19:38 -07:00 committed by GitHub
parent 1d1c574340
commit a0a6f11678
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -618,8 +618,16 @@ times.
static inline int
PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
return ((PyType_GetFlags(type) & feature) != 0);
PyType_HasFeature(PyTypeObject *type, unsigned long feature)
{
unsigned long flags;
#ifdef Py_LIMITED_API
// PyTypeObject is opaque in the limited C API
flags = PyType_GetFlags(type);
#else
flags = type->tp_flags;
#endif
return ((flags & feature) != 0);
}
#define PyType_FastSubclass(type, flag) PyType_HasFeature(type, flag)

View File

@ -0,0 +1,4 @@
Revert :c:func:`PyType_HasFeature` change: it reads again directly the
:c:member:`PyTypeObject.tp_flags` member when the limited C API is not used,
rather than always calling :c:func:`PyType_GetFlags` which hides implementation
details.