diff options
author | Guido van Rossum <guido@python.org> | 2002-08-13 10:05:56 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-08-13 10:05:56 (GMT) |
commit | 4571e9d42a3b1734635385eb2c4328cfe82496cd (patch) | |
tree | 6082849d2dbba310c821bf63f1e0cf188d06770f /Objects/intobject.c | |
parent | d0876b859d3789e7ec8c9ec18f4a04db3fc097c0 (diff) | |
download | cpython-4571e9d42a3b1734635385eb2c4328cfe82496cd.zip cpython-4571e9d42a3b1734635385eb2c4328cfe82496cd.tar.gz cpython-4571e9d42a3b1734635385eb2c4328cfe82496cd.tar.bz2 |
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.
Diffstat (limited to 'Objects/intobject.c')
-rw-r--r-- | Objects/intobject.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/intobject.c b/Objects/intobject.c index 1d05a63..a8ea6ac 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) { |