]> granicus.if.org Git - python/commitdiff
_sre: don't use Py_UNICODE anymore
authorVictor Stinner <victor.stinner@haypocalc.com>
Thu, 29 Sep 2011 01:27:47 +0000 (03:27 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Thu, 29 Sep 2011 01:27:47 +0000 (03:27 +0200)
 * 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

Modules/_sre.c

index 443150d1eb730986a1a5d6eb7c42c7483c5917a8..c685bae543cd2b49517af673c0109254bc27b87f 100644 (file)
@@ -163,15 +163,15 @@ static unsigned int sre_lower_locale(unsigned int ch)
 
 /* unicode-specific character predicates */
 
-#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL((Py_UNICODE)(ch))
-#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE((Py_UNICODE)(ch))
-#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK((Py_UNICODE)(ch))
-#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM((Py_UNICODE)(ch))
-#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM((ch)) || (ch) == '_')
+#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL(ch)
+#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE(ch)
+#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK(ch)
+#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM(ch)
+#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM(ch) || (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)
@@ -1674,7 +1674,7 @@ getstring(PyObject* string, Py_ssize_t* p_length,
         return ptr;
     }
 
-    /* get pointer to string buffer */
+    /* get pointer to byte string buffer */
     view.len = -1;
     buffer = Py_TYPE(string)->tp_as_buffer;
     if (!buffer || !buffer->bf_getbuffer ||
@@ -1702,8 +1702,6 @@ getstring(PyObject* string, Py_ssize_t* p_length,
 
     if (PyBytes_Check(string) || bytes == size)
         charsize = 1;
-    else if (bytes == (Py_ssize_t) (size * sizeof(Py_UNICODE)))
-        charsize = sizeof(Py_UNICODE);
     else {
         PyErr_SetString(PyExc_TypeError, "buffer size mismatch");
         return NULL;