Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0058b86

Browse files
author
Victor Stinner
committed
_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
1 parent 9d3579b commit 0058b86

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

Modules/_sre.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,15 @@ static unsigned int sre_lower_locale(unsigned int ch)
163163

164164
/* unicode-specific character predicates */
165165

166-
#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL((Py_UNICODE)(ch))
167-
#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE((Py_UNICODE)(ch))
168-
#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK((Py_UNICODE)(ch))
169-
#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM((Py_UNICODE)(ch))
170-
#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM((ch)) || (ch) == '_')
166+
#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL(ch)
167+
#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE(ch)
168+
#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK(ch)
169+
#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM(ch)
170+
#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM(ch) || (ch) == '_')
171171

172172
static unsigned int sre_lower_unicode(unsigned int ch)
173173
{
174-
return (unsigned int) Py_UNICODE_TOLOWER((Py_UNICODE)(ch));
174+
return (unsigned int) Py_UNICODE_TOLOWER(ch);
175175
}
176176

177177
LOCAL(int)
@@ -1674,7 +1674,7 @@ getstring(PyObject* string, Py_ssize_t* p_length,
16741674
return ptr;
16751675
}
16761676

1677-
/* get pointer to string buffer */
1677+
/* get pointer to byte string buffer */
16781678
view.len = -1;
16791679
buffer = Py_TYPE(string)->tp_as_buffer;
16801680
if (!buffer || !buffer->bf_getbuffer ||
@@ -1702,8 +1702,6 @@ getstring(PyObject* string, Py_ssize_t* p_length,
17021702

17031703
if (PyBytes_Check(string) || bytes == size)
17041704
charsize = 1;
1705-
else if (bytes == (Py_ssize_t) (size * sizeof(Py_UNICODE)))
1706-
charsize = sizeof(Py_UNICODE);
17071705
else {
17081706
PyErr_SetString(PyExc_TypeError, "buffer size mismatch");
17091707
return NULL;

0 commit comments

Comments
 (0)