summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrandt Bucher <brandtbucher@microsoft.com>2024-01-04 11:14:15 (GMT)
committerGitHub <noreply@github.com>2024-01-04 11:14:15 (GMT)
commit35ef8cb25917bfd6cbbd7c2bb55dd4f82131c9cf (patch)
tree9d24a2320bdc98d8038ad1bdb670a145049684a1
parent4c4b08dd2bd5f2cad4e41bf29119a3daa2956f6e (diff)
downloadcpython-35ef8cb25917bfd6cbbd7c2bb55dd4f82131c9cf.zip
cpython-35ef8cb25917bfd6cbbd7c2bb55dd4f82131c9cf.tar.gz
cpython-35ef8cb25917bfd6cbbd7c2bb55dd4f82131c9cf.tar.bz2
GH-113689: Fix broken handling of invalid executors (GH-113694)
-rw-r--r--Python/bytecodes.c3
-rw-r--r--Python/generated_cases.c.h3
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();