From 35ef8cb25917bfd6cbbd7c2bb55dd4f82131c9cf Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Thu, 4 Jan 2024 03:14:15 -0800 Subject: GH-113689: Fix broken handling of invalid executors (GH-113694) --- Python/bytecodes.c | 3 ++- Python/generated_cases.c.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 2eeeac5..e1a6a25 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -2378,11 +2378,12 @@ dummy_func( stack_pointer = _PyFrame_GetStackPointer(frame); } else { + code->co_executors->executors[oparg & 255] = NULL; opcode = this_instr->op.code = executor->vm_data.opcode; this_instr->op.arg = executor->vm_data.oparg; oparg = (oparg & (~255)) | executor->vm_data.oparg; - code->co_executors->executors[oparg&255] = NULL; Py_DECREF(executor); + next_instr = this_instr; DISPATCH_GOTO(); } } diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 99fd169..8226d82 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -2392,11 +2392,12 @@ stack_pointer = _PyFrame_GetStackPointer(frame); } else { + code->co_executors->executors[oparg & 255] = NULL; opcode = this_instr->op.code = executor->vm_data.opcode; this_instr->op.arg = executor->vm_data.oparg; oparg = (oparg & (~255)) | executor->vm_data.oparg; - code->co_executors->executors[oparg&255] = NULL; Py_DECREF(executor); + next_instr = this_instr; DISPATCH_GOTO(); } DISPATCH(); -- cgit v0.12