From 4b20f2574d412f4c4a5b1ab799d8e71a5dd3b766 Mon Sep 17 00:00:00 2001 From: Hai Shi Date: Mon, 31 May 2021 15:51:19 +0800 Subject: [PATCH] bpo-42972: Fully implement GC protocol for xxlimited (GH-26451) --- Modules/xxlimited.c | 8 ++++++++ Modules/xxlimited_35.c | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/Modules/xxlimited.c b/Modules/xxlimited.c index c3d98d34eb5..9bd9a5407d4 100644 --- a/Modules/xxlimited.c +++ b/Modules/xxlimited.c @@ -106,6 +106,13 @@ Xxo_traverse(XxoObject *self, visitproc visit, void *arg) return 0; } +static int +Xxo_clear(XxoObject *self) +{ + Py_CLEAR(self->x_attr); + return 0; +} + static void Xxo_finalize(XxoObject *self) { @@ -214,6 +221,7 @@ PyDoc_STRVAR(Xxo_doc, static PyType_Slot Xxo_Type_slots[] = { {Py_tp_doc, (char *)Xxo_doc}, {Py_tp_traverse, Xxo_traverse}, + {Py_tp_clear, Xxo_clear}, {Py_tp_finalize, Xxo_finalize}, {Py_tp_dealloc, Xxo_dealloc}, {Py_tp_getattro, Xxo_getattro}, diff --git a/Modules/xxlimited_35.c b/Modules/xxlimited_35.c index 5e93854f685..647abf67212 100644 --- a/Modules/xxlimited_35.c +++ b/Modules/xxlimited_35.c @@ -43,6 +43,13 @@ Xxo_traverse(XxoObject *self, visitproc visit, void *arg) return 0; } +static int +Xxo_clear(XxoObject *self) +{ + Py_CLEAR(self->x_attr); + return 0; +} + static void Xxo_finalize(XxoObject *self) { @@ -108,6 +115,7 @@ Xxo_setattr(XxoObject *self, const char *name, PyObject *v) static PyType_Slot Xxo_Type_slots[] = { {Py_tp_doc, "The Xxo type"}, {Py_tp_traverse, Xxo_traverse}, + {Py_tp_clear, Xxo_clear}, {Py_tp_finalize, Xxo_finalize}, {Py_tp_getattro, Xxo_getattro}, {Py_tp_setattr, Xxo_setattr},