[Python-checkins] bpo-42972: Fully support GC protocol for _queue.SimpleQueue (GH-26372) (GH-26406)
vstinner
webhook-mailer at python.org
Thu May 27 12:25:59 EDT 2021
https://github.com/python/cpython/commit/e73b3b1cd48c92d847990e220cb9cbdbde86476a
commit: e73b3b1cd48c92d847990e220cb9cbdbde86476a
branch: 3.10
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: vstinner <vstinner at python.org>
date: 2021-05-27T18:25:50+02:00
summary:
bpo-42972: Fully support GC protocol for _queue.SimpleQueue (GH-26372) (GH-26406)
(cherry picked from commit 4d7f8f9f7fb09ea8eb4e43409a16a91b0bf18571)
Co-authored-by: Erlend Egeberg Aasland <erlend.aasland at innova.no>
files:
M Modules/_queuemodule.c
diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c
index c27fb1a001d21..5e0f38f387abc 100644
--- a/Modules/_queuemodule.c
+++ b/Modules/_queuemodule.c
@@ -34,6 +34,13 @@ class _queue.SimpleQueue "simplequeueobject *" "simplequeue_get_state_by_type(ty
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=0a4023fe4d198c8d]*/
+static int
+simplequeue_clear(simplequeueobject *self)
+{
+ Py_CLEAR(self->lst);
+ return 0;
+}
+
static void
simplequeue_dealloc(simplequeueobject *self)
{
@@ -46,7 +53,7 @@ simplequeue_dealloc(simplequeueobject *self)
PyThread_release_lock(self->lock);
PyThread_free_lock(self->lock);
}
- Py_XDECREF(self->lst);
+ (void)simplequeue_clear(self);
if (self->weakreflist != NULL)
PyObject_ClearWeakRefs((PyObject *) self);
Py_TYPE(self)->tp_free(self);
@@ -57,6 +64,7 @@ static int
simplequeue_traverse(simplequeueobject *self, visitproc visit, void *arg)
{
Py_VISIT(self->lst);
+ Py_VISIT(Py_TYPE(self));
return 0;
}
@@ -362,6 +370,7 @@ static PyType_Slot simplequeue_slots[] = {
{Py_tp_dealloc, simplequeue_dealloc},
{Py_tp_doc, (void *)simplequeue_new__doc__},
{Py_tp_traverse, simplequeue_traverse},
+ {Py_tp_clear, simplequeue_clear},
{Py_tp_members, simplequeue_members},
{Py_tp_methods, simplequeue_methods},
{Py_tp_new, simplequeue_new},
More information about the Python-checkins
mailing list