changeset: 95197:585e555247ac user: Steve Dower date: Tue Mar 24 23:28:54 2015 -0700 files: Modules/_ctypes/cfield.c description: Issue #23765: Remove IsBadStringPtr calls in ctypes Also renames a local to avoid warnings about shadowing diff -r 755aeac3f788 -r 585e555247ac Modules/_ctypes/cfield.c --- a/Modules/_ctypes/cfield.c Tue Mar 24 23:20:57 2015 -0700 +++ b/Modules/_ctypes/cfield.c Tue Mar 24 23:28:54 2015 -0700 @@ -1354,14 +1354,6 @@ { /* XXX What about invalid pointers ??? */ if (*(void **)ptr) { -#if defined(MS_WIN32) && !defined(_WIN32_WCE) - if (IsBadStringPtrA(*(char **)ptr, -1)) { - PyErr_Format(PyExc_ValueError, - "invalid string pointer %p", - *(char **)ptr); - return NULL; - } -#endif return PyBytes_FromStringAndSize(*(char **)ptr, strlen(*(char **)ptr)); } else { @@ -1418,14 +1410,6 @@ wchar_t *p; p = *(wchar_t **)ptr; 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 { Py_INCREF(Py_None); @@ -1455,15 +1439,15 @@ /* create a BSTR from value */ if (value) { wchar_t* wvalue; - Py_ssize_t size; - wvalue = PyUnicode_AsUnicodeAndSize(value, &size); + Py_ssize_t wsize; + wvalue = PyUnicode_AsUnicodeAndSize(value, &wsize); if (wvalue == NULL) return NULL; - if ((unsigned) size != size) { + if ((unsigned) wsize != wsize) { PyErr_SetString(PyExc_ValueError, "String too long for BSTR"); return NULL; } - bstr = SysAllocStringLen(wvalue, (unsigned)size); + bstr = SysAllocStringLen(wvalue, (unsigned)wsize); Py_DECREF(value); } else bstr = NULL;