From: Andrew M. Kuchling Date: Mon, 14 Feb 2000 22:22:04 +0000 (+0000) Subject: Make multiplying a sequence by a long integer (5L * 'b') legal X-Git-Tag: v1.6a1~441 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1991ddc3e134e89e6c15d60e180fc67ad4c1ca01;p=python Make multiplying a sequence by a long integer (5L * 'b') legal --- diff --git a/Objects/abstract.c b/Objects/abstract.c index c120769687..3fc312a7fe 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -384,10 +384,21 @@ PyNumber_Multiply(v, w) } m = tp->tp_as_sequence; if (m && m->sq_repeat) { - if (!PyInt_Check(w)) + long mul_value; + + if (PyInt_Check(w)) { + mul_value = PyInt_AsLong(w); + } + else if (PyLong_Check(w)) { + mul_value = PyLong_AsLong(w); + if (PyErr_Occurred()) + return NULL; + } + else { return type_error( "can't multiply sequence with non-int"); - return (*m->sq_repeat)(v, (int)PyInt_AsLong(w)); + } + return (*m->sq_repeat)(v, (int)mul_value); } return type_error("bad operand type(s) for *"); }