Fix some ctypes test crashes, when running with a debug Python

version on win64 by using proper argtypes and restype function
attributes.
This commit is contained in:
Thomas Heller 2007-05-04 07:14:39 +00:00
parent c0e9840028
commit 0455214f1c
3 changed files with 11 additions and 4 deletions

View File

@ -34,7 +34,7 @@ class Test(unittest.TestCase):
def test_oledll(self):
self.failUnlessRaises(WindowsError,
oledll.oleaut32.CreateTypeLib2,
0, 0, 0)
0, None, None)
if __name__ == "__main__":
unittest.main()

View File

@ -10,7 +10,10 @@ from _ctypes import PyObj_FromPtr
################################################################
from sys import getrefcount as grc
if sys.version_info > (2, 4):
c_py_ssize_t = c_size_t
else:
c_py_ssize_t = c_int
class PythonAPITestCase(unittest.TestCase):
@ -18,7 +21,7 @@ class PythonAPITestCase(unittest.TestCase):
PyString_FromStringAndSize = pythonapi.PyString_FromStringAndSize
PyString_FromStringAndSize.restype = py_object
PyString_FromStringAndSize.argtypes = c_char_p, c_int
PyString_FromStringAndSize.argtypes = c_char_p, c_py_ssize_t
self.failUnlessEqual(PyString_FromStringAndSize("abcdefghi", 3), "abc")
@ -66,7 +69,7 @@ class PythonAPITestCase(unittest.TestCase):
def test_PyOS_snprintf(self):
PyOS_snprintf = pythonapi.PyOS_snprintf
PyOS_snprintf.argtypes = POINTER(c_char), c_int, c_char_p
PyOS_snprintf.argtypes = POINTER(c_char), c_size_t, c_char_p
buf = c_buffer(256)
PyOS_snprintf(buf, sizeof(buf), "Hello from %s", "ctypes")

View File

@ -13,6 +13,10 @@ if sys.platform == "win32":
def test(self):
from _ctypes import call_function
windll.kernel32.LoadLibraryA.restype = c_void_p
windll.kernel32.GetProcAddress.argtypes = c_void_p, c_char_p
windll.kernel32.GetProcAddress.restype = c_void_p
hdll = windll.kernel32.LoadLibraryA("kernel32")
funcaddr = windll.kernel32.GetProcAddress(hdll, "GetModuleHandleA")