diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2020-06-20 21:53:07 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2020-06-20 21:53:07 +0200 |
commit | fbafb389ea1bbcdc11f7ead9cca19cab3dd7f07d (patch) | |
tree | a96e6452d98f2ffd236f0592ae90599bbfabfca5 | |
parent | 3e688fe609edae93e330e78c0c0b94933d3aae59 (diff) | |
download | cython-fbafb389ea1bbcdc11f7ead9cca19cab3dd7f07d.tar.gz |
Reduce deprecated Py_UNICODE API usage if possible.
See https://github.com/cython/cython/issues/3678
-rw-r--r-- | Cython/Utility/ModuleSetupCode.c | 4 | ||||
-rw-r--r-- | Cython/Utility/StringTools.c | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c index 32e8ea954..4f17ed5bb 100644 --- a/Cython/Utility/ModuleSetupCode.c +++ b/Cython/Utility/ModuleSetupCode.c @@ -739,7 +739,11 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 diff --git a/Cython/Utility/StringTools.c b/Cython/Utility/StringTools.c index 9de65dce3..222edd8fc 100644 --- a/Cython/Utility/StringTools.c +++ b/Cython/Utility/StringTools.c @@ -118,6 +118,7 @@ static CYTHON_INLINE int __Pyx_UnicodeContainsUCS4(PyObject* unicode, Py_UCS4 ch //////////////////// PyUCS4InUnicode //////////////////// +#if Py_UNICODE_SIZE == 2 static int __Pyx_PyUnicodeBufferContainsUCS4_SP(Py_UNICODE* buffer, Py_ssize_t length, Py_UCS4 character) { /* handle surrogate pairs for Py_UNICODE buffers in 16bit Unicode builds */ Py_UNICODE high_val, low_val; @@ -129,6 +130,7 @@ static int __Pyx_PyUnicodeBufferContainsUCS4_SP(Py_UNICODE* buffer, Py_ssize_t l } return 0; } +#endif static int __Pyx_PyUnicodeBufferContainsUCS4_BMP(Py_UNICODE* buffer, Py_ssize_t length, Py_UCS4 character) { Py_UNICODE uchar; @@ -153,12 +155,15 @@ static CYTHON_INLINE int __Pyx_UnicodeContainsUCS4(PyObject* unicode, Py_UCS4 ch return 0; } #endif - if (Py_UNICODE_SIZE == 2 && unlikely(character > 65535)) { +#if Py_UNICODE_SIZE == 2 + if (unlikely(character > 65535)) { return __Pyx_PyUnicodeBufferContainsUCS4_SP( PyUnicode_AS_UNICODE(unicode), PyUnicode_GET_SIZE(unicode), character); - } else { + } else +#endif + { return __Pyx_PyUnicodeBufferContainsUCS4_BMP( PyUnicode_AS_UNICODE(unicode), PyUnicode_GET_SIZE(unicode), |