Message263540
C API functions returns a special value unambiguously signaling about a raised exception (NULL or -1). But in some cases this is ambiguous, because the special value is a legitimate value (e.g. -1 for PyLong_AsLong() or NULL for PyDict_GetItem()). Needed to use PyErr_Occurred() to distinguish between successful and failed call.
The problem is that if PyLong_AsLong() is called when the exception is set, successful call returned -1 is interpreted as failed. Since it is happen in very rare case, this bug is usually unnoticed.
Attached experimental patch makes some functions like PyLong_AsLong() always failing if called with an exception set. Some tests are failed with it applied: test_compile test_datetime test_io test_os test_symtable test_syntax test_xml_etree_c. |
|
Date |
User |
Action |
Args |
2016-04-16 08:02:38 | serhiy.storchaka | set | recipients:
+ serhiy.storchaka, vstinner |
2016-04-16 08:02:38 | serhiy.storchaka | set | messageid: <1460793758.51.0.304392536592.issue26776@psf.upfronthosting.co.za> |
2016-04-16 08:02:38 | serhiy.storchaka | link | issue26776 messages |
2016-04-16 08:02:38 | serhiy.storchaka | create | |
|