mirror of https://github.com/python/cpython
Merged revisions 65681-65682,65684 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r65681 | thomas.heller | 2008-08-14 21:10:48 +0200 (Do, 14 Aug 2008) | 4 lines issue #3554: ctypes.string_at and ctypes.wstring_at must use the pythonapi calling convention so that the GIL is held and error return values are checked. ........ r65682 | thomas.heller | 2008-08-14 22:04:38 +0200 (Do, 14 Aug 2008) | 2 lines Try to fix the test on 64-bit platforms. ........ r65684 | thomas.heller | 2008-08-14 22:19:18 +0200 (Do, 14 Aug 2008) | 2 lines Disable the test until I have one that works. ........
This commit is contained in:
parent
b531bef93a
commit
47bc809578
|
@ -485,7 +485,7 @@ _cast = PYFUNCTYPE(py_object, c_void_p, py_object, py_object)(_cast_addr)
|
|||
def cast(obj, typ):
|
||||
return _cast(obj, obj, typ)
|
||||
|
||||
_string_at = CFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
|
||||
_string_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
|
||||
def string_at(ptr, size=-1):
|
||||
"""string_at(addr[, size]) -> string
|
||||
|
||||
|
@ -497,7 +497,7 @@ try:
|
|||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
_wstring_at = CFUNCTYPE(py_object, c_void_p, c_int)(_wstring_at_addr)
|
||||
_wstring_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_wstring_at_addr)
|
||||
def wstring_at(ptr, size=-1):
|
||||
"""wstring_at(addr[, size]) -> string
|
||||
|
||||
|
|
|
@ -3,6 +3,16 @@ import unittest
|
|||
from ctypes import *
|
||||
|
||||
class MemFunctionsTest(unittest.TestCase):
|
||||
## def test_overflow(self):
|
||||
## # string_at and wstring_at must use the Python calling
|
||||
## # convention (which acquires the GIL and checks the Python
|
||||
## # error flag). Provoke an error and catch it; see also issue
|
||||
## # #3554: <http://bugs.python.org/issue3554>
|
||||
## self.assertRaises((OverflowError, MemoryError, SystemError),
|
||||
## lambda: wstring_at(u"foo", sys.maxint - 1))
|
||||
## self.assertRaises((OverflowError, MemoryError, SystemError),
|
||||
## lambda: string_at("foo", sys.maxint - 1))
|
||||
|
||||
def test_memmove(self):
|
||||
# large buffers apparently increase the chance that the memory
|
||||
# is allocated in high address space.
|
||||
|
|
|
@ -103,6 +103,12 @@ Library
|
|||
|
||||
- Removed the sunaudio module. Use sunau instead.
|
||||
|
||||
- Issue #3554: ctypes.string_at and ctypes.wstring_at did call Python
|
||||
api functions without holding the GIL, which could lead to a fatal
|
||||
error when they failed.
|
||||
|
||||
- Issue #799428: Fix Tkinter.Misc._nametowidget to unwrap Tcl command objects.
|
||||
|
||||
- Removed "ast" function aliases from the parser module.
|
||||
|
||||
- Issue #3313: Fixed a crash when a failed dlopen() call does not set
|
||||
|
|
Loading…
Reference in New Issue