]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-1635741: Fix winreg reference leaks (GH-31560)
authorVictor Stinner <vstinner@python.org>
Fri, 25 Feb 2022 11:34:00 +0000 (12:34 +0100)
committerGitHub <noreply@github.com>
Fri, 25 Feb 2022 11:34:00 +0000 (12:34 +0100)
Clear also the PyHKEY_Type static type at exit.

Objects/object.c
PC/winreg.c

index 3044c862fb9dac6fee6cdbac0e041f1a634de984..77a457223764a7dce98749d3c59bac625bca634e 100644 (file)
@@ -1825,6 +1825,11 @@ _PyTypes_InitState(PyInterpreterState *interp)
 }
 
 
+
+#ifdef MS_WINDOWS
+extern PyTypeObject PyHKEY_Type;
+#endif
+
 static PyTypeObject* static_types[] = {
     // The two most important base types: must be initialized first and
     // deallocated last.
@@ -1869,6 +1874,9 @@ static PyTypeObject* static_types[] = {
     &PyFunction_Type,
     &PyGen_Type,
     &PyGetSetDescr_Type,
+#ifdef MS_WINDOWS
+    &PyHKEY_Type,
+#endif
     &PyInstanceMethod_Type,
     &PyListIter_Type,
     &PyListRevIter_Type,
index 004a89a5355f6c52ffa1f9ad7c5ac890fcbf4cef..2d44c82000c682d0f9874dd8ca345a57b65238a9 100644 (file)
@@ -2046,11 +2046,9 @@ PyMODINIT_FUNC PyInit_winreg(void)
     PyHKEY_Type.tp_doc = PyHKEY_doc;
     if (PyType_Ready(&PyHKEY_Type) < 0)
         return NULL;
-    Py_INCREF(&PyHKEY_Type);
     if (PyDict_SetItemString(d, "HKEYType",
                              (PyObject *)&PyHKEY_Type) != 0)
         return NULL;
-    Py_INCREF(PyExc_OSError);
     if (PyDict_SetItemString(d, "error",
                              PyExc_OSError) != 0)
         return NULL;
@@ -2116,5 +2114,3 @@ PyMODINIT_FUNC PyInit_winreg(void)
     ADD_INT(REG_RESOURCE_REQUIREMENTS_LIST);
     return m;
 }
-
-