diff options
author | Mark Shannon <mark@hotpy.org> | 2023-04-13 15:19:07 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-13 15:19:07 (GMT) |
commit | efb8a2553c88a295514be228c44fb99ef035e3fa (patch) | |
tree | d8318deba8f8d98ce99751dcfabec6f44b5d053e /Python/ceval.c | |
parent | 4307feaddc76b9e93cd38e325a1f0ee59d593093 (diff) | |
download | cpython-efb8a2553c88a295514be228c44fb99ef035e3fa.zip cpython-efb8a2553c88a295514be228c44fb99ef035e3fa.tar.gz cpython-efb8a2553c88a295514be228c44fb99ef035e3fa.tar.bz2 |
GH-103488: Use return-offset, not yield-offset. (GH-103502)
* Use return-offset, not yield-offset, so that instruction pointer is correct when sending to a generator or coroutine.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index a38c9ec..8c43e3d 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -672,7 +672,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int _PyCode_CODE(tstate->interp->interpreter_trampoline); entry_frame.stacktop = 0; entry_frame.owner = FRAME_OWNED_BY_CSTACK; - entry_frame.yield_offset = 0; + entry_frame.return_offset = 0; /* Push frame */ entry_frame.previous = prev_cframe->current_frame; frame->previous = &entry_frame; @@ -881,6 +881,7 @@ exit_unwind: _PyInterpreterFrame *dying = frame; frame = cframe.current_frame = dying->previous; _PyEvalFrameClearAndPop(tstate, dying); + frame->return_offset = 0; if (frame == &entry_frame) { /* Restore previous cframe and exit */ tstate->cframe = cframe.previous; |