From f762677b6967d2090e1dc831d7f3504eb7cb55ac Mon Sep 17 00:00:00 2001 From: Anthony Baxter Date: Thu, 18 Apr 2002 04:40:05 +0000 Subject: [PATCH] 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. --- Objects/abstract.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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); -- 2.47.3