[Python-checkins] r55081 - python/branches/release25-maint/Modules/_ctypes python/branches/release25-maint/Modules/_ctypes/cfield.c

thomas.heller python-checkins at python.org
Wed May 2 21:41:21 CEST 2007


Author: thomas.heller
Date: Wed May 2 21:41:16 2007
New Revision: 55081
Modified:
 python/branches/release25-maint/Modules/_ctypes/ (props changed)
 python/branches/release25-maint/Modules/_ctypes/cfield.c
Log:
Merged revisions 55027 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk/Modules/_ctypes
........
 r55027 | thomas.heller | 2007年04月30日 18:04:57 +0200 (Mo, 30 Apr 2007) | 8 lines
 
 When accessing the .value attribute of a c_wchar_p instance, and the
 instance does not point to a valid wchar_t zero-terminated string,
 raise a ValueError. c_char_p does this already.
 
 The ValueError message now contains the correct pointer address.
 
 Will backport to release25-maint.
........
Modified: python/branches/release25-maint/Modules/_ctypes/cfield.c
==============================================================================
--- python/branches/release25-maint/Modules/_ctypes/cfield.c	(original)
+++ python/branches/release25-maint/Modules/_ctypes/cfield.c	Wed May 2 21:41:16 2007
@@ -1333,7 +1333,7 @@
 		if (IsBadStringPtrA(*(char **)ptr, -1)) {
 			PyErr_Format(PyExc_ValueError,
 				 "invalid string pointer %p",
-				 ptr);
+				 *(char **)ptr);
 			return NULL;
 		}
 #endif
@@ -1414,9 +1414,17 @@
 {
 	wchar_t *p;
 	p = *(wchar_t **)ptr;
-	if (p)
+	if (p) {
+#if defined(MS_WIN32) && !defined(_WIN32_WCE)
+		if (IsBadStringPtrW(*(wchar_t **)ptr, -1)) {
+			PyErr_Format(PyExc_ValueError,
+				 "invalid string pointer %p",
+				 *(wchar_t **)ptr);
+			return NULL;
+		}
+#endif
 		return PyUnicode_FromWideChar(p, wcslen(p));
-	else {
+	} else {
 		Py_INCREF(Py_None);
 		return Py_None;
 	}


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /