]> granicus.if.org Git - python/commitdiff
issue #3554: ctypes.string_at and ctypes.wstring_at must use the
authorThomas Heller <theller@ctypes.org>
Tue, 19 Aug 2008 17:17:37 +0000 (17:17 +0000)
committerThomas Heller <theller@ctypes.org>
Tue, 19 Aug 2008 17:17:37 +0000 (17:17 +0000)
pythonapi calling convention so that the GIL is held and error return
values are checked.

Lib/ctypes/__init__.py
Misc/NEWS

index ef90bc7b87868826a546790696a715d669b07a78..7ad9e2be19eddc37afef97a790d4ab7393995741 100644 (file)
@@ -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
 
index 954ae7e4ad3952517ff1b922df73e311f3ee5198..82c579d0b8ce50d94ff606aaf88f63c9b330c916 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -77,6 +77,10 @@ Core and builtins
 Library
 -------
 
+- 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 #2234: distutils failed for some versions of the cygwin compiler. The
   version reported by these tools does not necessarily follow the python
   version numbering scheme, so the module is less strict when parsing it.