summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-06-27 13:03:14 (GMT)
committerGitHub <noreply@github.com>2017-06-27 13:03:14 (GMT)
commite613e6add5f07ff6aad5802924596b631b707d2a (patch)
tree8e3a53cf8a0851c17a2dc9bcbd975c2bec5ff846 /Doc
parent65474b9d7a230943d4d3f1d7d51f77bb141240f0 (diff)
downloadcpython-e613e6add5f07ff6aad5802924596b631b707d2a.zip
cpython-e613e6add5f07ff6aad5802924596b631b707d2a.tar.gz
cpython-e613e6add5f07ff6aad5802924596b631b707d2a.tar.bz2
bpo-30708: Check for null characters in PyUnicode_AsWideCharString(). (#2285)
Raise a ValueError if the second argument is NULL and the wchar_t\* string contains null characters.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/c-api/unicode.rst16
-rw-r--r--Doc/whatsnew/3.7.rst4
2 files changed, 15 insertions, 5 deletions
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst
index 84059e4..45aff1b 100644
--- a/Doc/c-api/unicode.rst
+++ b/Doc/c-api/unicode.rst
@@ -934,16 +934,22 @@ wchar_t Support
Convert the Unicode object to a wide character string. The output string
always ends with a null character. If *size* is not *NULL*, write the number
of wide characters (excluding the trailing null termination character) into
- *\*size*.
+ *\*size*. Note that the resulting :c:type:`wchar_t` string might contain
+ null characters, which would cause the string to be truncated when used with
+ most C functions. If *size* is *NULL* and the :c:type:`wchar_t*` string
+ contains null characters a :exc:`ValueError` is raised.
Returns a buffer allocated by :c:func:`PyMem_Alloc` (use
- :c:func:`PyMem_Free` to free it) on success. On error, returns *NULL*,
- *\*size* is undefined and raises a :exc:`MemoryError`. Note that the
- resulting :c:type:`wchar_t` string might contain null characters, which
- would cause the string to be truncated when used with most C functions.
+ :c:func:`PyMem_Free` to free it) on success. On error, returns *NULL*
+ and *\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation
+ is failed.
.. versionadded:: 3.2
+ .. versionchanged:: 3.7
+ Raises a :exc:`ValueError` if *size* is *NULL* and the :c:type:`wchar_t*`
+ string contains null characters.
+
.. _builtincodecs:
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index 927ae5b..e34268e 100644
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -360,6 +360,10 @@ Changes in the C API
:c:type:`unsigned long`.
(Contributed by Serhiy Storchaka in :issue:`6532`.)
+- :c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the
+ second argument is *NULL* and the :c:type:`wchar_t*` string contains null
+ characters. (Contributed by Serhiy Storchaka in :issue:`30708`.)
+
Removed
=======