]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-41123: Remove PyUnicode_AsUnicodeCopy (GH-21209)
authorInada Naoki <songofacandy@gmail.com>
Tue, 30 Jun 2020 03:23:07 +0000 (12:23 +0900)
committerGitHub <noreply@github.com>
Tue, 30 Jun 2020 03:23:07 +0000 (12:23 +0900)
Doc/c-api/unicode.rst
Doc/data/refcounts.dat
Doc/whatsnew/3.10.rst
Include/cpython/unicodeobject.h
Misc/NEWS.d/next/C API/2020-06-29-15-49-36.bpo-41123.wYY4E1.rst [new file with mode: 0644]
Objects/unicodeobject.c

index b1787ed1ce89cf080cb1b887fe57620eee58bce5..0748a1e319489d1f5aae820b2a6095e608bc53c8 100644 (file)
@@ -724,20 +724,6 @@ Extension modules can continue using them, as they will not be removed in Python
    .. versionadded:: 3.3
 
 
-.. c:function:: Py_UNICODE* PyUnicode_AsUnicodeCopy(PyObject *unicode)
-
-   Create a copy of a Unicode string ending with a null code point. Return ``NULL``
-   and raise a :exc:`MemoryError` exception on memory allocation failure,
-   otherwise return a new allocated buffer (use :c:func:`PyMem_Free` to free
-   the buffer). Note that the resulting :c:type:`Py_UNICODE*` string may
-   contain embedded null code points, which would cause the string to be
-   truncated when used in most C functions.
-
-   .. versionadded:: 3.2
-
-   Please migrate to using :c:func:`PyUnicode_AsUCS4Copy` or similar new APIs.
-
-
 .. c:function:: Py_ssize_t PyUnicode_GetSize(PyObject *unicode)
 
    Return the size of the deprecated :c:type:`Py_UNICODE` representation, in
index 4d9aee370c61d5f50019c7f7924bd1cd197aa522..882d7d6d62fc39da3c468985083e7afdb67dd342 100644 (file)
@@ -2419,9 +2419,6 @@ PyUnicode_AsUnicodeAndSize:Py_UNICODE*:::
 PyUnicode_AsUnicodeAndSize:PyObject*:unicode:0:
 PyUnicode_AsUnicodeAndSize:Py_ssize_t*:size::
 
-PyUnicode_AsUnicodeCopy:Py_UNICODE*:::
-PyUnicode_AsUnicodeCopy:PyObject*:unicode:0:
-
 PyUnicode_GetSize:Py_ssize_t:::
 PyUnicode_GetSize:PyObject*:unicode:0:
 
index a755d2672ae6d1ee5cad3c7da7e2733a5af156dd..0674ce8cff17763832b5406552b869b381bba7c5 100644 (file)
@@ -240,3 +240,7 @@ Removed
 
 * Removed ``PyLong_FromUnicode()``. Please migrate to :c:func:`PyLong_FromUnicodeObject`.
   (Contributed by Inada Naoki in :issue:`41103`.)
+
+* Removed ``PyUnicode_AsUnicodeCopy()``. Please use :c:func:`PyUnicode_AsUCS4Copy` or
+  :c:func:`PyUnicode_AsWideCharString`
+  (Contributed by Inada Naoki in :issue:`41103`.)
index c1a8564349b995af21858787053cd56c1b0dd7e6..88a97a4cb5f71f1e47a2dfbd52d6bafd7d0b0497 100644 (file)
@@ -1162,14 +1162,6 @@ PyAPI_FUNC(int) _PyUnicode_IsAlpha(
 
 PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int);
 
-/* Create a copy of a unicode string ending with a nul character. Return NULL
-   and raise a MemoryError exception on memory allocation failure, otherwise
-   return a new allocated buffer (use PyMem_Free() to free the buffer). */
-
-Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy(
-    PyObject *unicode
-    );
-
 /* Return an interned Unicode object for an Identifier; may fail if there is no memory.*/
 PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*);
 
diff --git a/Misc/NEWS.d/next/C API/2020-06-29-15-49-36.bpo-41123.wYY4E1.rst b/Misc/NEWS.d/next/C API/2020-06-29-15-49-36.bpo-41123.wYY4E1.rst
new file mode 100644 (file)
index 0000000..74ac454
--- /dev/null
@@ -0,0 +1 @@
+Remove ``PyUnicode_AsUnicodeCopy``.
index c46ba4ae57dc6b9f5f60b024303140ffb00fbf37..8eafdacf559744dff3af30859e454ba7aba890a5 100644 (file)
@@ -15862,39 +15862,6 @@ unicode_iter(PyObject *seq)
     return (PyObject *)it;
 }
 
-Py_UNICODE*
-PyUnicode_AsUnicodeCopy(PyObject *unicode)
-{
-    Py_UNICODE *u, *copy;
-    Py_ssize_t len, size;
-
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-_Py_COMP_DIAG_PUSH
-_Py_COMP_DIAG_IGNORE_DEPR_DECLS
-    u = PyUnicode_AsUnicodeAndSize(unicode, &len);
-_Py_COMP_DIAG_POP
-    if (u == NULL)
-        return NULL;
-    /* Ensure we won't overflow the size. */
-    if (len > ((PY_SSIZE_T_MAX / (Py_ssize_t)sizeof(Py_UNICODE)) - 1)) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    size = len + 1; /* copy the null character */
-    size *= sizeof(Py_UNICODE);
-    copy = PyMem_Malloc(size);
-    if (copy == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memcpy(copy, u, size);
-    return copy;
-}
-
-
 static int
 encode_wstr_utf8(wchar_t *wstr, char **str, const char *name)
 {