summaryrefslogtreecommitdiffstats
path: root/Objects/weakrefobject.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-10-02 15:01:23 (GMT)
committerGitHub <noreply@github.com>2024-10-02 15:01:23 (GMT)
commit1ea6672a6fca8de94a617f5d0ca39c5dca5cc032 (patch)
tree0717991756979a86cec275667681498bfc5c7a75 /Objects/weakrefobject.c
parent8d7d257f6bcc76892a084b169cc9efa414a9e4c6 (diff)
downloadcpython-1ea6672a6fca8de94a617f5d0ca39c5dca5cc032.zip
cpython-1ea6672a6fca8de94a617f5d0ca39c5dca5cc032.tar.gz
cpython-1ea6672a6fca8de94a617f5d0ca39c5dca5cc032.tar.bz2
gh-111178: Fix function signatures in weakrefobject.c (#124903)
Diffstat (limited to 'Objects/weakrefobject.c')
-rw-r--r--Objects/weakrefobject.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index 61f0551..9e3da1c 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -104,9 +104,11 @@ clear_weakref_lock_held(PyWeakReference *self, PyObject **callback)
// Clear the weakref and its callback
static void
-clear_weakref(PyWeakReference *self)
+clear_weakref(PyObject *op)
{
+ PyWeakReference *self = _PyWeakref_CAST(op);
PyObject *callback = NULL;
+
// self->wr_object may be Py_None if the GC cleared the weakref, so lock
// using the pointer in the weakref.
LOCK_WEAKREFS_FOR_WR(self);
@@ -139,22 +141,24 @@ static void
weakref_dealloc(PyObject *self)
{
PyObject_GC_UnTrack(self);
- clear_weakref((PyWeakReference *) self);
+ clear_weakref(self);
Py_TYPE(self)->tp_free(self);
}
static int
-gc_traverse(PyWeakReference *self, visitproc visit, void *arg)
+gc_traverse(PyObject *op, visitproc visit, void *arg)
{
+ PyWeakReference *self = _PyWeakref_CAST(op);
Py_VISIT(self->wr_callback);
return 0;
}
static int
-gc_clear(PyWeakReference *self)
+gc_clear(PyObject *op)
{
+ PyWeakReference *self = _PyWeakref_CAST(op);
PyObject *callback;
// The world is stopped during GC in free-threaded builds. It's safe to
// call this without holding the lock.
@@ -198,8 +202,9 @@ weakref_hash_lock_held(PyWeakReference *self)
}
static Py_hash_t
-weakref_hash(PyWeakReference *self)
+weakref_hash(PyObject *op)
{
+ PyWeakReference *self = _PyWeakref_CAST(op);
Py_hash_t hash;
Py_BEGIN_CRITICAL_SECTION(self);
hash = weakref_hash_lock_held(self);
@@ -499,11 +504,11 @@ _PyWeakref_RefType = {
.tp_vectorcall_offset = offsetof(PyWeakReference, vectorcall),
.tp_call = PyVectorcall_Call,
.tp_repr = weakref_repr,
- .tp_hash = (hashfunc)weakref_hash,
+ .tp_hash = weakref_hash,
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
Py_TPFLAGS_HAVE_VECTORCALL | Py_TPFLAGS_BASETYPE,
- .tp_traverse = (traverseproc)gc_traverse,
- .tp_clear = (inquiry)gc_clear,
+ .tp_traverse = gc_traverse,
+ .tp_clear = gc_clear,
.tp_richcompare = weakref_richcompare,
.tp_methods = weakref_methods,
.tp_members = weakref_members,
@@ -687,7 +692,7 @@ proxy_bool(PyObject *proxy)
}
static void
-proxy_dealloc(PyWeakReference *self)
+proxy_dealloc(PyObject *self)
{
PyObject_GC_UnTrack(self);
clear_weakref(self);
@@ -850,7 +855,7 @@ _PyWeakref_ProxyType = {
sizeof(PyWeakReference),
0,
/* methods */
- (destructor)proxy_dealloc, /* tp_dealloc */
+ proxy_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
@@ -868,8 +873,8 @@ _PyWeakref_ProxyType = {
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
0, /* tp_doc */
- (traverseproc)gc_traverse, /* tp_traverse */
- (inquiry)gc_clear, /* tp_clear */
+ gc_traverse, /* tp_traverse */
+ gc_clear, /* tp_clear */
proxy_richcompare, /* tp_richcompare */
0, /* tp_weaklistoffset */
proxy_iter, /* tp_iter */
@@ -885,7 +890,7 @@ _PyWeakref_CallableProxyType = {
sizeof(PyWeakReference),
0,
/* methods */
- (destructor)proxy_dealloc, /* tp_dealloc */
+ proxy_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
@@ -902,8 +907,8 @@ _PyWeakref_CallableProxyType = {
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
0, /* tp_doc */
- (traverseproc)gc_traverse, /* tp_traverse */
- (inquiry)gc_clear, /* tp_clear */
+ gc_traverse, /* tp_traverse */
+ gc_clear, /* tp_clear */
proxy_richcompare, /* tp_richcompare */
0, /* tp_weaklistoffset */
proxy_iter, /* tp_iter */