]> granicus.if.org Git - python/commit
Trent Mick <trentm@activestate.com>:
authorFred Drake <fdrake@acm.org>
Wed, 28 Jun 2000 17:49:30 +0000 (17:49 +0000)
committerFred Drake <fdrake@acm.org>
Wed, 28 Jun 2000 17:49:30 +0000 (17:49 +0000)
commit541dc3b7b2606906e0ee2d9088a984443b1fa64c
tree5617b98464b3e3190cb34e5652fe265e4c3365f5
parentc82634c13cce7d846236eba8ab345c52cebc3567
Trent Mick <trentm@activestate.com>:

The cause: Relatively recent (last month) patches to getargs.c added
overflow checking to the PyArg_Parse*() integral formatters thereby
restricting 'b' to unsigned char value and 'h','i', and 'l' to signed
integral values (i.e. if the incoming value is outside of the
specified bounds you get an OverflowError, previous it silently
overflowed).

The problem: This broke the array module (as Fredrik pointed out)
because *its* formatters relied on the loose allowance of signed and
unsigned ranges being able to pass through PyArg_Parse*()'s
formatters.

The fix: This patch fixes the array module to work with the more
strict bounds checking now in PyArg_Parse*().

How: If the type signature of a formatter in the arraymodule exactly
matches one in PyArg_Parse*(), then use that directly. If there is no
equivalent type signature in PyArg_Parse*() (e.g. there is no unsigned
int formatter in PyArg_Parse*()), then use the next one up and do some
extra bounds checking in the array module.

This partially closes SourceForge patch #100506.
Modules/arraymodule.c