From c14d7e4b816134b8e93ece4066a86d229631ce96 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 31 Mar 2022 09:59:27 +0200 Subject: bpo-47164: Add _PyASCIIObject_CAST() macro (GH-32191) Add macros to cast objects to PyASCIIObject*, PyCompactUnicodeObject* and PyUnicodeObject*: _PyASCIIObject_CAST(), _PyCompactUnicodeObject_CAST() and _PyUnicodeObject_CAST(). Using these new macros make the code more readable and check their argument with: assert(PyUnicode_Check(op)). Remove redundant assert(PyUnicode_Check(op)) in macros using directly or indirectly these new CAST macros. Replacing existing casts with these macros. --- Python/traceback.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Python/traceback.c') diff --git a/Python/traceback.c b/Python/traceback.c index 6a721cf909..f5c1849101 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -1073,7 +1073,7 @@ _Py_DumpHexadecimal(int fd, uintptr_t value, Py_ssize_t width) void _Py_DumpASCII(int fd, PyObject *text) { - PyASCIIObject *ascii = (PyASCIIObject *)text; + PyASCIIObject *ascii = _PyASCIIObject_CAST(text); Py_ssize_t i, size; int truncated; int kind; @@ -1087,19 +1087,19 @@ _Py_DumpASCII(int fd, PyObject *text) size = ascii->length; kind = ascii->state.kind; if (kind == PyUnicode_WCHAR_KIND) { - wstr = ((PyASCIIObject *)text)->wstr; + wstr = ascii->wstr; if (wstr == NULL) return; - size = ((PyCompactUnicodeObject *)text)->wstr_length; + size = _PyCompactUnicodeObject_CAST(text)->wstr_length; } else if (ascii->state.compact) { if (ascii->state.ascii) - data = ((PyASCIIObject*)text) + 1; + data = ascii + 1; else - data = ((PyCompactUnicodeObject*)text) + 1; + data = _PyCompactUnicodeObject_CAST(text) + 1; } else { - data = ((PyUnicodeObject *)text)->data.any; + data = _PyUnicodeObject_CAST(text)->data.any; if (data == NULL) return; } -- cgit v1.2.1