From: Thomas Heller Date: Fri, 13 Jul 2007 17:07:55 +0000 (+0000) Subject: Fix for SF# 1701409: segfault in c_char_p of ctypes. The repr output X-Git-Tag: v2.5.2c1~242 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f4155d1de834563f8fd6f34575c4321c4252900;p=thirdparty%2FPython%2Fcpython.git Fix for SF# 1701409: segfault in c_char_p of ctypes. The repr output of c_char_p and c_wchar_p has changed as a sideeffect. --- diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py index 593730449563..7b5f7482e600 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -226,6 +226,14 @@ _check_size(c_char) class c_char_p(_SimpleCData): _type_ = "z" + if _os.name == "nt": + def __repr__(self): + if not windll.kernel32.IsBadStringPtrA(self, -1): + return "%s(%r)" % (self.__class__.__name__, self.value) + return "%s(%s)" % (self.__class__.__name__, cast(self, c_void_p).value) + else: + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, cast(self, c_void_p).value) _check_size(c_char_p, "P") class c_void_p(_SimpleCData): diff --git a/Misc/NEWS b/Misc/NEWS index c75b2f27083d..c873f46fd994 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -26,6 +26,10 @@ Core and builtins Library ------- +- Bug #1701409: Fix a segfault in printing ctypes.c_char_p and + ctypes.c_wchar_p when they point to an invalid location. As a + sideeffect the representation of these instances has changed. + - Bug #1734723: Fix repr.Repr() so it doesn't ignore the maxtuple attribute. - Bug #1728403: Fix a bug that CJKCodecs StreamReader hangs when it