Skip to content

Commit d61e0bf

Browse files
committed
Tidy up frame ownership changes
1 parent 9711f62 commit d61e0bf

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Python/frame.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ take_ownership(PyFrameObject *f, _PyInterpreterFrame *frame)
5252
assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
5353
_PyInterpreterFrame *new_frame = (_PyInterpreterFrame *)f->_f_frame_data;
5454
_PyFrame_Copy(frame, new_frame);
55+
// _PyFrame_Copy takes the reference to the executable,
56+
// so we need to restore it.
57+
frame->f_executable = PyStackRef_DUP(new_frame->f_executable);
5558
f->f_frame = new_frame;
5659
new_frame->owner = FRAME_OWNED_BY_FRAME_OBJECT;
5760
if (_PyFrame_IsIncomplete(new_frame)) {
@@ -111,9 +114,6 @@ _PyFrame_ClearExceptCode(_PyInterpreterFrame *frame)
111114
PyFrameObject *f = frame->frame_obj;
112115
frame->frame_obj = NULL;
113116
if (Py_REFCNT(f) > 1) {
114-
// take_ownership takes the reference to the executable,
115-
// so we need to incref it.
116-
PyStackRef_AsPyObjectNew(frame->f_executable);
117117
take_ownership(f, frame);
118118
Py_DECREF(f);
119119
return;

0 commit comments

Comments
 (0)