[Python-Dev] Bad interaction of __index__ and sequence repeat
David Hopwood
david.nospam.hopwood at blueyonder.co.uk
Fri Jul 28 14:50:51 CEST 2006
Armin Rigo wrote:
> Hi,
>
> There is an oversight in the design of __index__() that only just
> surfaced :-( It is responsible for the following behavior, on a 32-bit
> machine with >= 2GB of RAM:
>
> >>> s = 'x' * (2**100) # works!
> >>> len(s)
> 2147483647
>
> This is because PySequence_Repeat(v, w) works by applying w.__index__ in
> order to call v->sq_repeat. However, __index__ is defined to clip the
> result to fit in a Py_ssize_t.
Clipping the result sounds like it would *never* be a good idea. What was
the rationale for that? It should throw an exception.
--
David Hopwood <david.nospam.hopwood at blueyonder.co.uk>
More information about the Python-Dev
mailing list