summaryrefslogtreecommitdiffstats
path: root/Include/internal/pycore_object.h
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-04-06 12:07:02 (GMT)
committerGitHub <noreply@github.com>2020-04-06 12:07:02 (GMT)
commit38aefc585f60a77d66f4fbe5a37594a488b53474 (patch)
tree142fb1765e421b36ee746a6a5f53b0d52161b2c2 /Include/internal/pycore_object.h
parent08050e959e6c40839cd2c9e5f6a4fd1513e3d605 (diff)
downloadcpython-38aefc585f60a77d66f4fbe5a37594a488b53474.zip
cpython-38aefc585f60a77d66f4fbe5a37594a488b53474.tar.gz
cpython-38aefc585f60a77d66f4fbe5a37594a488b53474.tar.bz2
bpo-40170: PyObject_GET_WEAKREFS_LISTPTR() becomes a function (GH-19377)
Convert the PyObject_GET_WEAKREFS_LISTPTR() macro to a function to hide implementation details: the macro accessed directly to the PyTypeObject.tp_weaklistoffset member. Add _PyObject_GET_WEAKREFS_LISTPTR() static inline function to the internal C API.
Diffstat (limited to 'Include/internal/pycore_object.h')
-rw-r--r--Include/internal/pycore_object.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h
index 10a5746..002b700 100644
--- a/Include/internal/pycore_object.h
+++ b/Include/internal/pycore_object.h
@@ -87,6 +87,13 @@ extern void _Py_PrintReferences(FILE *);
extern void _Py_PrintReferenceAddresses(FILE *);
#endif
+static inline PyObject **
+_PyObject_GET_WEAKREFS_LISTPTR(PyObject *op)
+{
+ Py_ssize_t offset = Py_TYPE(op)->tp_weaklistoffset;
+ return (PyObject **)((char *)op + offset);
+}
+
#ifdef __cplusplus
}
#endif