summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorInada Naoki <songofacandy@gmail.com>2020-06-17 11:09:44 (GMT)
committerGitHub <noreply@github.com>2020-06-17 11:09:44 (GMT)
commit2c4928d37edc5e4aeec3c0b79fa3460b1ec9b60d (patch)
tree31be169cf2554f600034c827870ce2ce384470cd /Objects
parent818f5b597ae93411cc44e404544247d436026a00 (diff)
downloadcpython-2c4928d37edc5e4aeec3c0b79fa3460b1ec9b60d.zip
cpython-2c4928d37edc5e4aeec3c0b79fa3460b1ec9b60d.tar.gz
cpython-2c4928d37edc5e4aeec3c0b79fa3460b1ec9b60d.tar.bz2
bpo-36346: Add Py_DEPRECATED to deprecated unicode APIs (GH-20878)
Co-authored-by: Kyle Stanley <aeros167@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
Diffstat (limited to 'Objects')
-rw-r--r--Objects/unicodeobject.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index c75eb07..1433848 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -120,6 +120,13 @@ extern "C" {
_PyUnicode_UTF8_LENGTH(op))
#define _PyUnicode_WSTR(op) \
(((PyASCIIObject*)(op))->wstr)
+
+/* Don't use deprecated macro of unicodeobject.h */
+#undef PyUnicode_WSTR_LENGTH
+#define PyUnicode_WSTR_LENGTH(op) \
+ (PyUnicode_IS_COMPACT_ASCII(op) ? \
+ ((PyASCIIObject*)op)->length : \
+ ((PyCompactUnicodeObject*)op)->wstr_length)
#define _PyUnicode_WSTR_LENGTH(op) \
(((PyCompactUnicodeObject*)(op))->wstr_length)
#define _PyUnicode_LENGTH(op) \
@@ -970,11 +977,14 @@ ensure_unicode(PyObject *obj)
#include "stringlib/find_max_char.h"
#include "stringlib/undef.h"
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
#include "stringlib/unicodedefs.h"
#include "stringlib/fastsearch.h"
#include "stringlib/count.h"
#include "stringlib/find.h"
#include "stringlib/undef.h"
+_Py_COMP_DIAG_POP
/* --- Unicode Object ----------------------------------------------------- */
@@ -4097,6 +4107,11 @@ PyUnicode_AsUnicodeAndSize(PyObject *unicode, Py_ssize_t *size)
return w;
}
+/* Deprecated APIs */
+
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+
Py_UNICODE *
PyUnicode_AsUnicode(PyObject *unicode)
{
@@ -4135,6 +4150,8 @@ PyUnicode_GetSize(PyObject *unicode)
return -1;
}
+_Py_COMP_DIAG_POP
+
Py_ssize_t
PyUnicode_GetLength(PyObject *unicode)
{
@@ -12364,6 +12381,8 @@ PyUnicode_IsIdentifier(PyObject *self)
return len && i == len;
}
else {
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
Py_ssize_t i = 0, len = PyUnicode_GET_SIZE(self);
if (len == 0) {
/* an empty string is not a valid identifier */
@@ -12401,6 +12420,7 @@ PyUnicode_IsIdentifier(PyObject *self)
}
}
return 1;
+_Py_COMP_DIAG_POP
}
}
@@ -15955,7 +15975,10 @@ PyUnicode_AsUnicodeCopy(PyObject *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. */