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. --- Python/errors.c | 2 +- Python/pystate.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'Python') diff --git a/Python/errors.c b/Python/errors.c index db007709d2..9e53d05041 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -1372,7 +1372,7 @@ _PyErr_WriteUnraisableMsg(const char *err_msg_str, PyObject *obj) } if (exc_tb == NULL) { - struct _frame *frame = tstate->frame; + PyFrameObject *frame = tstate->frame; if (frame != NULL) { exc_tb = _PyTraceBack_FromFrame(NULL, frame); if (exc_tb == NULL) { diff --git a/Python/pystate.c b/Python/pystate.c index d6f58822b6..dd95750027 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -1042,11 +1042,13 @@ PyThreadState_GetInterpreter(PyThreadState *tstate) } -struct _frame* +PyFrameObject* PyThreadState_GetFrame(PyThreadState *tstate) { assert(tstate != NULL); - return tstate->frame; + PyFrameObject *frame = tstate->frame; + Py_XINCREF(frame); + return frame; } @@ -1165,7 +1167,7 @@ _PyThread_CurrentFrames(void) for (i = runtime->interpreters.head; i != NULL; i = i->next) { PyThreadState *t; for (t = i->tstate_head; t != NULL; t = t->next) { - struct _frame *frame = t->frame; + PyFrameObject *frame = t->frame; if (frame == NULL) { continue; } -- cgit v1.2.1