From 5de39f4b412ed5b0f3ed0140c83b2c1f8c707603 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Wed, 8 Dec 2021 17:17:16 -0800 Subject: bpo-45510: Check both types when specializing subtraction (GH-29995) --- Python/specialize.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Python/specialize.c b/Python/specialize.c index cdc5353..5121845 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -1490,6 +1490,10 @@ _Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr, break; case NB_SUBTRACT: case NB_INPLACE_SUBTRACT: + if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) { + SPECIALIZATION_FAIL(BINARY_OP, SPEC_FAIL_DIFFERENT_TYPES); + goto failure; + } if (PyLong_CheckExact(lhs)) { *instr = _Py_MAKECODEUNIT(BINARY_OP_SUBTRACT_INT, _Py_OPARG(*instr)); -- cgit v0.12