From 4571e9d42a3b1734635385eb2c4328cfe82496cd Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 13 Aug 2002 10:05:56 +0000 Subject: [PATCH] Add an improvement wrinkle to Neil Schemenauer's change to int_mul (rev. 2.86). The other type is only disqualified from sq_repeat when it has the CHECKTYPES flag. This means that for extension types that only support "old-style" numeric ops, such as Zope 2's ExtensionClass, sq_repeat still trumps nb_multiply. --- Objects/intobject.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Objects/intobject.c b/Objects/intobject.c index 1d05a631c2..a8ea6ac1f5 100644 --- a/Objects/intobject.c +++ b/Objects/intobject.c @@ -345,8 +345,10 @@ product that must have overflowed. #define USE_SQ_REPEAT(o) (!PyInt_Check(o) && \ o->ob_type->tp_as_sequence && \ o->ob_type->tp_as_sequence->sq_repeat && \ - (!o->ob_type->tp_as_number || \ - !o->ob_type->tp_as_number->nb_multiply)) + !(o->ob_type->tp_as_number && \ + o->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES && \ + o->ob_type->tp_as_number->nb_multiply)) + static PyObject * int_mul(PyObject *v, PyObject *w) { -- 2.40.0