summaryrefslogtreecommitdiff
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorBrandt Bucher <brandtbucher@microsoft.com>2023-01-09 12:20:04 -0800
committerGitHub <noreply@github.com>2023-01-09 12:20:04 -0800
commit61762b93871419b34f02d83cee5ca0d94d4a2903 (patch)
tree286b9aff961b5435e2d34894857a603ae86aa5c6 /Python/ceval.c
parent2e80c2a976c13dcb69a654b386164dca362295a3 (diff)
downloadcpython-git-61762b93871419b34f02d83cee5ca0d94d4a2903.tar.gz
GH-100126: Skip incomplete frames in more places (GH-100613)
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 56cd9ad629..7deee76cc5 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2749,16 +2749,13 @@ _PyInterpreterFrame *
_PyEval_GetFrame(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- return tstate->cframe->current_frame;
+ return _PyThreadState_GetFrame(tstate);
}
PyFrameObject *
PyEval_GetFrame(void)
{
_PyInterpreterFrame *frame = _PyEval_GetFrame();
- while (frame && _PyFrame_IsIncomplete(frame)) {
- frame = frame->previous;
- }
if (frame == NULL) {
return NULL;
}
@@ -2772,7 +2769,7 @@ PyEval_GetFrame(void)
PyObject *
_PyEval_GetBuiltins(PyThreadState *tstate)
{
- _PyInterpreterFrame *frame = tstate->cframe->current_frame;
+ _PyInterpreterFrame *frame = _PyThreadState_GetFrame(tstate);
if (frame != NULL) {
return frame->f_builtins;
}
@@ -2811,7 +2808,7 @@ PyObject *
PyEval_GetLocals(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- _PyInterpreterFrame *current_frame = tstate->cframe->current_frame;
+ _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
if (current_frame == NULL) {
_PyErr_SetString(tstate, PyExc_SystemError, "frame does not exist");
return NULL;
@@ -2830,7 +2827,7 @@ PyObject *
PyEval_GetGlobals(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- _PyInterpreterFrame *current_frame = tstate->cframe->current_frame;
+ _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
if (current_frame == NULL) {
return NULL;
}