From 4386b9045e5fe1151e65c2816264b5710000eb9f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 29 Apr 2020 03:01:43 +0200 Subject: bpo-40429: PyThreadState_GetFrame() returns a strong ref (GH-19781) The PyThreadState_GetFrame() function now returns a strong reference to the frame. --- Modules/_xxsubinterpretersmodule.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'Modules/_xxsubinterpretersmodule.c') diff --git a/Modules/_xxsubinterpretersmodule.c b/Modules/_xxsubinterpretersmodule.c index e618930e09..15e80559ec 100644 --- a/Modules/_xxsubinterpretersmodule.c +++ b/Modules/_xxsubinterpretersmodule.c @@ -1840,14 +1840,17 @@ _is_running(PyInterpreterState *interp) "interpreter has more than one thread"); return -1; } + + assert(!PyErr_Occurred()); PyFrameObject *frame = PyThreadState_GetFrame(tstate); if (frame == NULL) { - if (PyErr_Occurred() != NULL) { - return -1; - } return 0; } - return (int)(frame->f_executing); + + int executing = (int)(frame->f_executing); + Py_DECREF(frame); + + return executing; } static int -- cgit v1.2.1