Clear internal call error in 'L' format. Fixes #723201.
Backported to 2.4.
This commit is contained in:
parent
f2a8d63e4f
commit
ff232d7230
|
@ -1,7 +1,7 @@
|
|||
# Run the _testcapi module tests (tests for the Python/C API): by defn,
|
||||
# these are all functions _testcapi exports whose name begins with 'test_'.
|
||||
|
||||
import sys
|
||||
import sys, unittest
|
||||
from test import test_support
|
||||
import _testcapi
|
||||
|
||||
|
@ -35,6 +35,12 @@ def TestThreadState():
|
|||
raise test_support.TestFailed, \
|
||||
"Couldn't find main thread correctly in the list"
|
||||
|
||||
# Tests which use _testcapi helpers
|
||||
class OtherTests(unittest.TestCase):
|
||||
def test_exc_L(self):
|
||||
# This used to raise a SystemError(bad internal call)
|
||||
self.assertRaises(TypeError, _testcapi.getargs_L, "String")
|
||||
|
||||
try:
|
||||
_testcapi._test_thread_state
|
||||
have_thread_state = True
|
||||
|
@ -46,3 +52,9 @@ if have_thread_state:
|
|||
import threading
|
||||
t=threading.Thread(target=TestThreadState)
|
||||
t.start()
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(OtherTests)
|
||||
|
||||
if __name__=='__main__':
|
||||
test_main()
|
||||
|
|
|
@ -10,6 +10,8 @@ What's New in Python 2.5 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Bug #723201: Raise a TypeError for passing bad objects to 'L' format.
|
||||
|
||||
- Bug #1124295: the __name__ attribute of file objects was
|
||||
inadvertently made inaccessible in restricted mode.
|
||||
|
||||
|
|
|
@ -610,6 +610,7 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
|
|||
PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * );
|
||||
PY_LONG_LONG ival = PyLong_AsLongLong( arg );
|
||||
if( ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) {
|
||||
PyErr_Clear();
|
||||
return converterr("long<L>", arg, msgbuf, bufsize);
|
||||
} else {
|
||||
*p = ival;
|
||||
|
|
Loading…
Reference in New Issue