Commit 37943769 authored by Victor Stinner's avatar Victor Stinner

PyUnicode_READ_CHAR() ensures that the string is ready

parent fe0c155c
...@@ -429,14 +429,16 @@ PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type; ...@@ -429,14 +429,16 @@ PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
PyUnicode_READ_CHAR, for multiple consecutive reads callers should PyUnicode_READ_CHAR, for multiple consecutive reads callers should
cache kind and use PyUnicode_READ instead. */ cache kind and use PyUnicode_READ instead. */
#define PyUnicode_READ_CHAR(unicode, index) \ #define PyUnicode_READ_CHAR(unicode, index) \
((Py_UCS4) \ (assert(PyUnicode_Check(unicode)), \
(PyUnicode_KIND((unicode)) == PyUnicode_1BYTE_KIND ? \ assert(PyUnicode_IS_READY(unicode)), \
((const Py_UCS1 *)(PyUnicode_DATA((unicode))))[(index)] : \ (Py_UCS4) \
(PyUnicode_KIND((unicode)) == PyUnicode_2BYTE_KIND ? \ (PyUnicode_KIND((unicode)) == PyUnicode_1BYTE_KIND ? \
((const Py_UCS2 *)(PyUnicode_DATA((unicode))))[(index)] : \ ((const Py_UCS1 *)(PyUnicode_DATA((unicode))))[(index)] : \
((const Py_UCS4 *)(PyUnicode_DATA((unicode))))[(index)] \ (PyUnicode_KIND((unicode)) == PyUnicode_2BYTE_KIND ? \
) \ ((const Py_UCS2 *)(PyUnicode_DATA((unicode))))[(index)] : \
)) ((const Py_UCS4 *)(PyUnicode_DATA((unicode))))[(index)] \
) \
))
/* Returns the length of the unicode string. The caller has to make sure that /* Returns the length of the unicode string. The caller has to make sure that
the string has it's canonical representation set before calling the string has it's canonical representation set before calling
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment