From 8cfe83373f86419dbb2d9a67cb747d3ee673f7f7 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Sat, 29 Oct 2022 01:13:28 -0700 Subject: [PATCH 1/4] gh-83004: Clean up refleak in _io initialisation --- Modules/_io/_iomodule.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 38ef24637b7318..a266c07732394b 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -705,8 +705,10 @@ PyInit__io(void) /* BlockingIOError, for compatibility */ Py_INCREF(PyExc_BlockingIOError); if (PyModule_AddObject(m, "BlockingIOError", - (PyObject *) PyExc_BlockingIOError) < 0) + (PyObject *) PyExc_BlockingIOError) < 0) { + Py_DECREF(PyExc_BlockingIOError); goto fail; + } // Set type base classes PyFileIO_Type.tp_base = &PyRawIOBase_Type; From 6087614d672ddb093ac2e97a366b5fa6e4fca1f3 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Sat, 29 Oct 2022 01:46:05 -0700 Subject: [PATCH 2/4] actually use PyModule_AddObjectRef --- Modules/_io/_iomodule.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index a266c07732394b..a7b2e984310d18 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -703,10 +703,8 @@ PyInit__io(void) goto fail; /* BlockingIOError, for compatibility */ - Py_INCREF(PyExc_BlockingIOError); - if (PyModule_AddObject(m, "BlockingIOError", - (PyObject *) PyExc_BlockingIOError) < 0) { - Py_DECREF(PyExc_BlockingIOError); + if (PyModule_AddObjectRef(m, "BlockingIOError", + (PyObject *) PyExc_BlockingIOError) < 0) { goto fail; } From 6eb7a9d34d6a0ae6130011890633f4da99d7964b Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 05:52:39 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst diff --git a/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst b/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst new file mode 100644 index 00000000000000..9cb8ac1a9df027 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst @@ -0,0 +1 @@ +Clean up refleak in :mod:`_io` initialisation. From de290c3d9fa8acb780137866d575b78d851bf92f Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 2 Nov 2022 19:21:40 -0700 Subject: [PATCH 4/4] Update Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst --- .../next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst b/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst index 9cb8ac1a9df027..4de17abd063424 100644 --- a/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst +++ b/Misc/NEWS.d/next/Library/2022-11-02-05-52-36.gh-issue-83004.LBl79O.rst @@ -1 +1 @@ -Clean up refleak in :mod:`_io` initialisation. +Clean up refleak on failed module initialisation in :mod:`_io`.