From: Thomas Heller Date: Tue, 19 Aug 2008 17:17:37 +0000 (+0000) Subject: issue #3554: ctypes.string_at and ctypes.wstring_at must use the X-Git-Tag: v2.5.3c1~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=275e229ee2e95ea906cc6260dc3b5af9f14b15ff;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py index ef90bc7b8786..7ad9e2be19ed 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -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 diff --git a/Misc/NEWS b/Misc/NEWS index 954ae7e4ad39..82c579d0b8ce 100644 --- 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.