]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-123504: Fix regression in `_tkinter` initializer (#123662)
authorPeter Bierma <zintensitydev@gmail.com>
Wed, 4 Sep 2024 11:43:50 +0000 (07:43 -0400)
committerGitHub <noreply@github.com>
Wed, 4 Sep 2024 11:43:50 +0000 (13:43 +0200)
* Add module traverse function to _tkinter.
* Set m_size to -1 (instead of 0).

Modules/_tkinter.c

index e1e81082d9ec470366e0f9daf4243845a9053526..4f05cab375ed6b725a5fb3dac7c3a7403ca40799 100644 (file)
@@ -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);
@@ -3399,16 +3399,28 @@ module_clear(PyObject *mod)
     return 0;
 }
 
+static int
+module_traverse(PyObject *Py_UNUSED(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)
 {
-    module_clear((PyObject *)mod);
+    (void)module_clear((PyObject *)mod);
 }
 
 static struct PyModuleDef _tkintermodule = {
     PyModuleDef_HEAD_INIT,
     .m_name = "_tkinter",
+    .m_size = -1,
     .m_methods = moduleMethods,
+    .m_traverse = module_traverse,
     .m_clear = module_clear,
     .m_free = module_free
 };