Kaydet (Commit) 0058b860 authored tarafından Victor Stinner's avatar Victor Stinner

_sre: don't use Py_UNICODE anymore

 * Downcasting from Py_UCS4 to Py_UNICODE is wrong is Py_UNICODE is 16-bit
   wchar_t
 * Remove old special case in getstring(), unicode is now handled separetely
üst 9d3579b7
...@@ -163,15 +163,15 @@ static unsigned int sre_lower_locale(unsigned int ch) ...@@ -163,15 +163,15 @@ static unsigned int sre_lower_locale(unsigned int ch)
/* unicode-specific character predicates */ /* unicode-specific character predicates */
#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL((Py_UNICODE)(ch)) #define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL(ch)
#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE((Py_UNICODE)(ch)) #define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE(ch)
#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK((Py_UNICODE)(ch)) #define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK(ch)
#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM((Py_UNICODE)(ch)) #define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM(ch)
#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM((ch)) || (ch) == '_') #define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM(ch) || (ch) == '_')
static unsigned int sre_lower_unicode(unsigned int ch) static unsigned int sre_lower_unicode(unsigned int ch)
{ {
return (unsigned int) Py_UNICODE_TOLOWER((Py_UNICODE)(ch)); return (unsigned int) Py_UNICODE_TOLOWER(ch);
} }
LOCAL(int) LOCAL(int)
...@@ -1674,7 +1674,7 @@ getstring(PyObject* string, Py_ssize_t* p_length, ...@@ -1674,7 +1674,7 @@ getstring(PyObject* string, Py_ssize_t* p_length,
return ptr; return ptr;
} }
/* get pointer to string buffer */ /* get pointer to byte string buffer */
view.len = -1; view.len = -1;
buffer = Py_TYPE(string)->tp_as_buffer; buffer = Py_TYPE(string)->tp_as_buffer;
if (!buffer || !buffer->bf_getbuffer || if (!buffer || !buffer->bf_getbuffer ||
...@@ -1702,8 +1702,6 @@ getstring(PyObject* string, Py_ssize_t* p_length, ...@@ -1702,8 +1702,6 @@ getstring(PyObject* string, Py_ssize_t* p_length,
if (PyBytes_Check(string) || bytes == size) if (PyBytes_Check(string) || bytes == size)
charsize = 1; charsize = 1;
else if (bytes == (Py_ssize_t) (size * sizeof(Py_UNICODE)))
charsize = sizeof(Py_UNICODE);
else { else {
PyErr_SetString(PyExc_TypeError, "buffer size mismatch"); PyErr_SetString(PyExc_TypeError, "buffer size mismatch");
return NULL; return NULL;
......
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