summaryrefslogtreecommitdiffstats
path: root/Objects/frameobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/frameobject.c')
-rw-r--r--Objects/frameobject.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 85cc4a2..cb822a1 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -1155,8 +1155,14 @@ PyFrame_GetBack(PyFrameObject *frame)
{
assert(frame != NULL);
PyFrameObject *back = frame->f_back;
- if (back == NULL && frame->f_frame->previous != NULL) {
- back = _PyFrame_GetFrameObject(frame->f_frame->previous);
+ if (back == NULL) {
+ _PyInterpreterFrame *prev = frame->f_frame->previous;
+ while (prev && _PyFrame_IsIncomplete(prev)) {
+ prev = prev->previous;
+ }
+ if (prev) {
+ back = _PyFrame_GetFrameObject(prev);
+ }
}
Py_XINCREF(back);
return back;