[Python-3000] int-long unification
Marcin 'Qrczak' Kowalczyk
qrczak at knm.org.pl
Mon Aug 21 13:11:12 CEST 2006
Nick Coghlan <ncoghlan at gmail.com> writes:
> PyInt_AsLong can already fail with OverflowError
> it accepts arbitrary objects and coerces them to integers via
> __int__, instead of just accepting PyInt instances.
If it calls __int__, it can fail with any exception resulting from
user code.
Grepping sources (2.4.2) reveals that usages are split into 4 groups:
1. Calling PyInt_AsLong only after PyInt_Check succeeds.
2. Handling the case when PyInt_AsLong returns -1 and PyErr_Occurred(),
or just when PyErr_Occurred().
3. Doing both (e.g. Modules/mmapmodule.c). The test is superfluous
but harmless.
4. Doing neither (e.g. Modules/parsermodule.c, Modules/posixmodule.c,
Modules/selectmodule.c and possibly more). This is potentially buggy.
--
__("< Marcin Kowalczyk
\__/ qrczak at knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
More information about the Python-3000
mailing list