]> granicus.if.org Git - python/commitdiff
Fix some ctypes test crashes, when running with a debug Python
authorThomas Heller <theller@ctypes.org>
Fri, 4 May 2007 07:14:39 +0000 (07:14 +0000)
committerThomas Heller <theller@ctypes.org>
Fri, 4 May 2007 07:14:39 +0000 (07:14 +0000)
version on win64 by using proper argtypes and restype function
attributes.

Lib/ctypes/test/test_checkretval.py
Lib/ctypes/test/test_python_api.py
Lib/ctypes/test/test_random_things.py

index e055c49a35c4047550f5db7525c3b024613c6d69..28be6c619f70c4a85d217802bce0cf6b070c4cd0 100644 (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()
index 9d134740f5afb34988e6cf7add17ce473fec4c68..265ee558d42e15f9eb2bc45fd3919f7649e43d10 100644 (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")
index 78a665bc5f95d7e59b61022bb7e65a04ea039f67..12b4e62a1981709b887fd927a81cd9ca5cc39009 100644 (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")