summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2007-07-12 11:00:22 (GMT)
committerThomas Heller <theller@ctypes.org>2007-07-12 11:00:22 (GMT)
commit5fa3f0517b072d6e864d33cfc4fe3f53ea02c702 (patch)
tree50fa66c65847565ce754d24592f4da51f8e77869
parente409b979509af36bbd9ee8ebbc85d805062e2e95 (diff)
downloadcpython-5fa3f0517b072d6e864d33cfc4fe3f53ea02c702.zip
cpython-5fa3f0517b072d6e864d33cfc4fe3f53ea02c702.tar.gz
cpython-5fa3f0517b072d6e864d33cfc4fe3f53ea02c702.tar.bz2
Py_USING_UNICODE is no longer defined on Windows (on posix it is still
in pyconfig.h). Remove the workaround for the broken (in Python 2.3) PyUnicode_(From|As)WideChar functions.
-rw-r--r--Modules/_ctypes/_ctypes.c66
-rw-r--r--Modules/_ctypes/ctypes.h15
2 files changed, 1 insertions, 80 deletions
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index 1e9a3cf..e5c1470 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -4828,72 +4828,6 @@ init_ctypes(void)
init_callbacks_in_module(m);
}
-/*****************************************************************
- * replacements for broken Python api functions (in Python 2.3).
- * See #1047269 Buffer overwrite in PyUnicode_AsWideChar
- */
-
-#ifdef HAVE_WCHAR_H
-
-PyObject *My_PyUnicode_FromWideChar(register const wchar_t *w,
- Py_ssize_t size)
-{
- PyUnicodeObject *unicode;
-
- if (w == NULL) {
- PyErr_BadInternalCall();
- return NULL;
- }
-
- unicode = (PyUnicodeObject *)PyUnicode_FromUnicode(NULL, size);
- if (!unicode)
- return NULL;
-
- /* Copy the wchar_t data into the new object */
-#ifdef HAVE_USABLE_WCHAR_T
- memcpy(unicode->str, w, size * sizeof(wchar_t));
-#else
- {
- register Py_UNICODE *u;
- register int i;
- u = PyUnicode_AS_UNICODE(unicode);
- /* In Python, the following line has a one-off error */
- for (i = size; i > 0; i--)
- *u++ = *w++;
- }
-#endif
-
- return (PyObject *)unicode;
-}
-
-Py_ssize_t My_PyUnicode_AsWideChar(PyUnicodeObject *unicode,
- register wchar_t *w,
- Py_ssize_t size)
-{
- if (unicode == NULL) {
- PyErr_BadInternalCall();
- return -1;
- }
- if (size > PyUnicode_GET_SIZE(unicode))
- size = PyUnicode_GET_SIZE(unicode);
-#ifdef HAVE_USABLE_WCHAR_T
- memcpy(w, unicode->str, size * sizeof(wchar_t));
-#else
- {
- register Py_UNICODE *u;
- register int i;
- u = PyUnicode_AS_UNICODE(unicode);
- /* In Python, the following line has a one-off error */
- for (i = size; i > 0; i--)
- *w++ = *u++;
- }
-#endif
-
- return size;
-}
-
-#endif
-
/*
Local Variables:
compile-command: "cd .. && python setup.py -q build -g && python setup.py -q build install --home ~"
diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h
index e74872c..1791089 100644
--- a/Modules/_ctypes/ctypes.h
+++ b/Modules/_ctypes/ctypes.h
@@ -368,24 +368,11 @@ extern char *conversion_mode_errors;
} while (0)
#endif
-/* Python's PyUnicode_*WideChar functions are broken ... */
-#if defined(Py_USING_UNICODE) && defined(HAVE_WCHAR_H)
+#if defined(HAVE_WCHAR_H)
# define CTYPES_UNICODE
#endif
-#ifdef CTYPES_UNICODE
-# undef PyUnicode_FromWideChar
-# define PyUnicode_FromWideChar My_PyUnicode_FromWideChar
-
-# undef PyUnicode_AsWideChar
-# define PyUnicode_AsWideChar My_PyUnicode_AsWideChar
-
-extern PyObject *My_PyUnicode_FromWideChar(const wchar_t *, Py_ssize_t);
-extern Py_ssize_t My_PyUnicode_AsWideChar(PyUnicodeObject *, wchar_t *, Py_ssize_t);
-
-#endif
-
extern void FreeClosure(void *);
extern void *MallocClosure(void);