]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43181: Convert PyObject_TypeCheck to static inline function (GH-24533)
authorErlend Egeberg Aasland <erlend.aasland@innova.no>
Mon, 15 Feb 2021 16:19:24 +0000 (17:19 +0100)
committerGitHub <noreply@github.com>
Mon, 15 Feb 2021 16:19:24 +0000 (17:19 +0100)
Doc/c-api/object.rst
Include/object.h
Misc/NEWS.d/next/Core and Builtins/2021-02-11-11-37-14.bpo-43181.ydv33S.rst [new file with mode: 0644]

index a387b4a2df1342978db3c88bf113bd2d2d73081c..1100af1df2928c58f2e7b295f62f66cd1031cb6b 100644 (file)
@@ -297,8 +297,8 @@ Object Protocol
 
 .. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
 
-   Return true if the object *o* is of type *type* or a subtype of *type*.  Both
-   parameters must be non-``NULL``.
+   Return non-zero if the object *o* is of type *type* or a subtype of *type*, and
+   ``0`` otherwise.  Both parameters must be non-``NULL``.
 
 
 .. c:function:: Py_ssize_t PyObject_Size(PyObject *o)
index 8d0039428e73aff874d9dfc9b2e0993407da40fa..0870e4c6f854c3c3d3a568744c6f53eb6f759c76 100644 (file)
@@ -235,8 +235,11 @@ PyAPI_FUNC(void *) PyType_GetModuleState(struct _typeobject *);
 
 /* Generic type check */
 PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *);
-#define PyObject_TypeCheck(ob, tp) \
-    (Py_IS_TYPE(ob, tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
+
+static inline int _PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
+    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
+}
+#define PyObject_TypeCheck(ob, type) _PyObject_TypeCheck(_PyObject_CAST(ob), type)
 
 PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
 PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-02-11-11-37-14.bpo-43181.ydv33S.rst b/Misc/NEWS.d/next/Core and Builtins/2021-02-11-11-37-14.bpo-43181.ydv33S.rst
new file mode 100644 (file)
index 0000000..0e0a571
--- /dev/null
@@ -0,0 +1,2 @@
+Convert :c:func:`PyObject_TypeCheck` macro to a static inline function. Patch by
+Erlend E. Aasland.