From: Anthony Baxter Date: Thu, 18 Apr 2002 04:40:05 +0000 (+0000) Subject: backport gvanrossum's patch: X-Git-Tag: v2.2.2b1~439 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f762677b6967d2090e1dc831d7f3504eb7cb55ac;p=thirdparty%2FPython%2Fcpython.git backport gvanrossum's patch: SF bug 544647. PyNumber_InPlaceMultiply insisted on calling sq_inplace_repeat if it existed, even if nb_inplace_multiply also existed and the arguments weren't right for sq_inplace_repeat. Change this to only use sq_inplace_repeat if nb_inplace_multiply isn't defined. Bugfix candidate. --- diff --git a/Objects/abstract.c b/Objects/abstract.c index 162c53c9b367..0556c5a2a54d 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -740,8 +740,12 @@ PyObject * PyNumber_InPlaceMultiply(PyObject *v, PyObject *w) { PyObject * (*g)(PyObject *, int) = NULL; - if (HASINPLACE(v) && v->ob_type->tp_as_sequence && - (g = v->ob_type->tp_as_sequence->sq_inplace_repeat)) { + if (HASINPLACE(v) && + v->ob_type->tp_as_sequence && + (g = v->ob_type->tp_as_sequence->sq_inplace_repeat) && + !(v->ob_type->tp_as_number && + v->ob_type->tp_as_number->nb_inplace_multiply)) + { long n; if (PyInt_Check(w)) { n = PyInt_AsLong(w);