From 18c290a1d8dc0468eab4f0377f00caef45fea258 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Wed, 4 Sep 2024 06:17:25 -0400 Subject: [PATCH 1/5] Add module traverse function to _tkinter --- Modules/_tkinter.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index e1e81082d9ec47..31958fdafa85f7 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -3399,6 +3399,16 @@ module_clear(PyObject *mod) return 0; } +static int +module_traverse(PyObject *module, visitproc visit, void *arg) +{ + Py_VISIT(Tkinter_TclError); + Py_VISIT(Tkapp_Type); + Py_VISIT(Tktt_Type); + Py_VISIT(PyTclObject_Type); + return 0; +} + static void module_free(void *mod) { @@ -3410,7 +3420,8 @@ static struct PyModuleDef _tkintermodule = { .m_name = "_tkinter", .m_methods = moduleMethods, .m_clear = module_clear, - .m_free = module_free + .m_traverse = module_traverse, + .m_free = module_free, }; PyMODINIT_FUNC From bf69a6fea3ffb81392d264070a466d7d876944c1 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Wed, 4 Sep 2024 06:17:47 -0400 Subject: [PATCH 2/5] Add -1 m_size --- Modules/_tkinter.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 31958fdafa85f7..f76b4a2b2ec39f 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -3422,6 +3422,7 @@ static struct PyModuleDef _tkintermodule = { .m_clear = module_clear, .m_traverse = module_traverse, .m_free = module_free, + .m_size = -1 }; PyMODINIT_FUNC From 77491c26270aeb09e6c589a967bef2e04da088f8 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Wed, 4 Sep 2024 06:59:05 -0400 Subject: [PATCH 3/5] Fix struct layout consistency --- Modules/_tkinter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index f76b4a2b2ec39f..16e24deb702224 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -3418,11 +3418,11 @@ module_free(void *mod) static struct PyModuleDef _tkintermodule = { PyModuleDef_HEAD_INIT, .m_name = "_tkinter", + .m_size = -1, .m_methods = moduleMethods, - .m_clear = module_clear, .m_traverse = module_traverse, + .m_clear = module_clear, .m_free = module_free, - .m_size = -1 }; PyMODINIT_FUNC From 253989cc4d5c124271fa4e14dc08a20f2f77f363 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Wed, 4 Sep 2024 06:59:40 -0400 Subject: [PATCH 4/5] Fix trailing comma --- Modules/_tkinter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 16e24deb702224..bbbf9dfb8be523 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -3422,7 +3422,7 @@ static struct PyModuleDef _tkintermodule = { .m_methods = moduleMethods, .m_traverse = module_traverse, .m_clear = module_clear, - .m_free = module_free, + .m_free = module_free }; PyMODINIT_FUNC From a2f83c74365e2b9b99afb052d1943deb94d66e7e Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Wed, 4 Sep 2024 07:08:31 -0400 Subject: [PATCH 5/5] Slight cosmetic changes. --- Modules/_tkinter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index f76b4a2b2ec39f..8043fd8c4616c7 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -3390,7 +3390,7 @@ DisableEventHook(void) } static int -module_clear(PyObject *mod) +module_clear(PyObject *Py_UNUSED(mod)) { Py_CLEAR(Tkinter_TclError); Py_CLEAR(Tkapp_Type); @@ -3400,7 +3400,7 @@ module_clear(PyObject *mod) } static int -module_traverse(PyObject *module, visitproc visit, void *arg) +module_traverse(PyObject *Py_UNUSED(module), visitproc visit, void *arg) { Py_VISIT(Tkinter_TclError); Py_VISIT(Tkapp_Type); @@ -3412,7 +3412,7 @@ module_traverse(PyObject *module, visitproc visit, void *arg) static void module_free(void *mod) { - module_clear((PyObject *)mod); + (void)module_clear((PyObject *)mod); } static struct PyModuleDef _tkintermodule = {