diff options
| author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-06-15 06:29:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-15 06:29:44 -0700 |
| commit | e30fe27dabbc6b48736c3c17d57f6fa542376e8f (patch) | |
| tree | 3c9b333a5910399e2e0161dfe0e6c3953bac47d0 /Modules/_threadmodule.c | |
| parent | 2f2ea96c4429b81f491aa1cdc4219ef2fd6d37fb (diff) | |
| download | cpython-git-e30fe27dabbc6b48736c3c17d57f6fa542376e8f.tar.gz | |
bpo-42972: _thread.RLock implements the GH protocol (GH-26734)
The _thread.RLock type now fully implement the GC protocol: add a
traverse function and the Py_TPFLAGS_HAVE_GC flag.
(cherry picked from commit 1cd3d859a49b047dd08abb6f44f0539564d3525a)
Co-authored-by: Victor Stinner <vstinner@python.org>
Diffstat (limited to 'Modules/_threadmodule.c')
| -rw-r--r-- | Modules/_threadmodule.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 6924d6553a..5a2001c8fb 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -327,6 +327,14 @@ typedef struct { PyObject *in_weakreflist; } rlockobject; +static int +rlock_traverse(rlockobject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + return 0; +} + + static void rlock_dealloc(rlockobject *self) { @@ -579,13 +587,14 @@ static PyType_Slot rlock_type_slots[] = { {Py_tp_alloc, PyType_GenericAlloc}, {Py_tp_new, rlock_new}, {Py_tp_members, rlock_type_members}, + {Py_tp_traverse, rlock_traverse}, {0, 0}, }; static PyType_Spec rlock_type_spec = { .name = "_thread.RLock", .basicsize = sizeof(rlockobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, .slots = rlock_type_slots, }; |
