summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2023-04-13 15:19:07 (GMT)
committerGitHub <noreply@github.com>2023-04-13 15:19:07 (GMT)
commitefb8a2553c88a295514be228c44fb99ef035e3fa (patch)
treed8318deba8f8d98ce99751dcfabec6f44b5d053e /Python/ceval.c
parent4307feaddc76b9e93cd38e325a1f0ee59d593093 (diff)
downloadcpython-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.c3
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;