From: Guido van Rossum Date: Tue, 13 Aug 2002 10:05:56 +0000 (+0000) Subject: Add an improvement wrinkle to Neil Schemenauer's change to int_mul X-Git-Tag: v2.3c1~4510 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4571e9d42a3b1734635385eb2c4328cfe82496cd;p=python 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. --- 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) {