From 1834133e66d95a143c9df5f068b3109927aefd65 Mon Sep 17 00:00:00 2001 From: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Date: Wed, 20 Jul 2022 11:53:30 +0530 Subject: GH-90699: fix ref counting of static immortal strings (gh-94850) --- .../Core and Builtins/2022-07-14-10-07-53.gh-issue-90699.x3aG9m.rst | 1 + Modules/_io/textio.c | 2 +- Objects/boolobject.c | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2022-07-14-10-07-53.gh-issue-90699.x3aG9m.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-07-14-10-07-53.gh-issue-90699.x3aG9m.rst b/Misc/NEWS.d/next/Core and Builtins/2022-07-14-10-07-53.gh-issue-90699.x3aG9m.rst new file mode 100644 index 0000000..795f4df --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2022-07-14-10-07-53.gh-issue-90699.x3aG9m.rst @@ -0,0 +1 @@ +Fix reference counting bug in :meth:`bool.__repr__`. Patch by Kumar Aditya. diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index 89094d6..3369694 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -2244,7 +2244,7 @@ _textiowrapper_readline(textio *self, Py_ssize_t limit) Py_CLEAR(chunks); } if (line == NULL) { - line = &_Py_STR(empty); + line = Py_NewRef(&_Py_STR(empty)); } return line; diff --git a/Objects/boolobject.c b/Objects/boolobject.c index ff72187..8a20e36 100644 --- a/Objects/boolobject.c +++ b/Objects/boolobject.c @@ -9,7 +9,8 @@ static PyObject * bool_repr(PyObject *self) { - return self == Py_True ? &_Py_ID(True) : &_Py_ID(False); + PyObject *res = self == Py_True ? &_Py_ID(True) : &_Py_ID(False); + return Py_NewRef(res); } /* Function to return a bool from a C long */ -- cgit v0.12