]> granicus.if.org Git - python/commitdiff
remove some usage of Py_UNICODE_TOUPPER/LOWER
authorBenjamin Peterson <benjamin@python.org>
Thu, 12 Jan 2012 02:00:42 +0000 (21:00 -0500)
committerBenjamin Peterson <benjamin@python.org>
Thu, 12 Jan 2012 02:00:42 +0000 (21:00 -0500)
Objects/stringlib/asciilib.h
Objects/stringlib/stringdefs.h
Objects/stringlib/ucs1lib.h
Objects/stringlib/ucs2lib.h
Objects/stringlib/ucs4lib.h
Objects/stringlib/unicodedefs.h
Python/_warnings.c
Python/formatter_unicode.c

index f6f733339c15519faa028b99f7c00de149b2cd85..ae68e3c89f00db2f8d114d03d6fde13935dbab8e 100644 (file)
@@ -15,8 +15,6 @@
 #define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
 #define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
 #define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
 #define STRINGLIB_STR            PyUnicode_1BYTE_DATA
 #define STRINGLIB_LEN            PyUnicode_GET_LENGTH
 #define STRINGLIB_NEW            unicode_fromascii
index 7d300595468c3567f58c6368f80cfa5436f381d8..fec9f189a1f71055eca7b4907f3715ddffbe6557 100644 (file)
@@ -18,8 +18,6 @@
 #define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r'))
 #define STRINGLIB_ISDECIMAL(x)   ((x >= '0') && (x <= '9'))
 #define STRINGLIB_TODECIMAL(x)   (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1)
-#define STRINGLIB_TOUPPER        Py_TOUPPER
-#define STRINGLIB_TOLOWER        Py_TOLOWER
 #define STRINGLIB_STR            PyBytes_AS_STRING
 #define STRINGLIB_LEN            PyBytes_GET_SIZE
 #define STRINGLIB_NEW            PyBytes_FromStringAndSize
index 2c78bd26e9c1444dfb55057da2de974624e72d72..42b9d91c53942e132b702f1da7828e42644fb455 100644 (file)
@@ -15,8 +15,6 @@
 #define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
 #define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
 #define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
 #define STRINGLIB_STR            PyUnicode_1BYTE_DATA
 #define STRINGLIB_LEN            PyUnicode_GET_LENGTH
 #define STRINGLIB_NEW            _PyUnicode_FromUCS1
index cb8bc64de8eb0e471b356c7029cd23ef6e5f2d54..611e741ca3fe31ea09c3f17d5b50d9bc3843396c 100644 (file)
@@ -15,8 +15,6 @@
 #define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
 #define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
 #define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
 #define STRINGLIB_STR            PyUnicode_2BYTE_DATA
 #define STRINGLIB_LEN            PyUnicode_GET_LENGTH
 #define STRINGLIB_NEW            _PyUnicode_FromUCS2
index 7cd7b339f54f0b6257380c3c9a474ff3d8de3d37..330b29257bc3962bcc2f193a2e9dfeaf40f654b6 100644 (file)
@@ -15,8 +15,6 @@
 #define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
 #define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
 #define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
 #define STRINGLIB_STR            PyUnicode_4BYTE_DATA
 #define STRINGLIB_LEN            PyUnicode_GET_LENGTH
 #define STRINGLIB_NEW            _PyUnicode_FromUCS4
index a38162ba16db3c888e60630f9939a729c2e31660..3ccc57ed9b92af8a49c00f306a8656bf40c0ccae 100644 (file)
@@ -18,8 +18,6 @@
 #define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
 #define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
 #define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
 #define STRINGLIB_STR            PyUnicode_AS_UNICODE
 #define STRINGLIB_LEN            PyUnicode_GET_SIZE
 #define STRINGLIB_NEW            PyUnicode_FromUnicode
index 458e346aa3a45730e0d8c872f83fd3a96d2447ef..adebd51ed2125bf82e3b60517157a788d69f6899 100644 (file)
@@ -510,13 +510,14 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
         kind = PyUnicode_KIND(*filename);
         data = PyUnicode_DATA(*filename);
 
+#define ascii_lower(c) ((c <= 127) ? Py_TOLOWER(c) : 0)
         /* if filename.lower().endswith((".pyc", ".pyo")): */
         if (len >= 4 &&
             PyUnicode_READ(kind, data, len-4) == '.' &&
-            Py_UNICODE_TOLOWER(PyUnicode_READ(kind, data, len-3)) == 'p' &&
-            Py_UNICODE_TOLOWER(PyUnicode_READ(kind, data, len-2)) == 'y' &&
-            (Py_UNICODE_TOLOWER(PyUnicode_READ(kind, data, len-1)) == 'c' ||
-                Py_UNICODE_TOLOWER(PyUnicode_READ(kind, data, len-1)) == 'o'))
+            ascii_lower(PyUnicode_READ(kind, data, len-3)) == 'p' &&
+            ascii_lower(PyUnicode_READ(kind, data, len-2)) == 'y' &&
+            (ascii_lower(PyUnicode_READ(kind, data, len-1)) == 'c' ||
+                ascii_lower(PyUnicode_READ(kind, data, len-1)) == 'o'))
         {
             *filename = PyUnicode_Substring(*filename, 0,
                                             PyUnicode_GET_LENGTH(*filename)-1);
index ef0151192b76925476917b8f5b6812f9b914d42e..12b880d7e79291591521af1106108a6e4cc41b88 100644 (file)
@@ -561,13 +561,14 @@ fill_number(PyObject *out, Py_ssize_t pos, const NumberFieldWidths *spec,
             return -1;
         if (toupper) {
             Py_ssize_t t;
-            /* XXX if the upper-case prefix is wider than the target
-               buffer, the caller should have allocated a wider string,
-               but currently doesn't. */
-            for (t = 0; t < spec->n_prefix; ++t)
-                PyUnicode_WRITE(kind, data, pos + t,
-                                Py_UNICODE_TOUPPER(
-                                    PyUnicode_READ(kind, data, pos + t)));
+            for (t = 0; t < spec->n_prefix; t++) {
+                Py_UCS4 c = PyUnicode_READ(kind, data, pos + t);
+                if (c > 127) {
+                    PyErr_SetString(PyExc_SystemError, "prefix not ASCII");
+                    return -1;
+                }
+                PyUnicode_WRITE(kind, data, pos + t, Py_TOUPPER(c));
+            }
         }
         pos += spec->n_prefix;
     }
@@ -607,10 +608,14 @@ fill_number(PyObject *out, Py_ssize_t pos, const NumberFieldWidths *spec,
     }
     if (toupper) {
         Py_ssize_t t;
-        for (t = 0; t < spec->n_grouped_digits; ++t)
-            PyUnicode_WRITE(kind, data, pos + t,
-                            Py_UNICODE_TOUPPER(
-                                PyUnicode_READ(kind, data, pos + t)));
+        for (t = 0; t < spec->n_grouped_digits; t++) {
+            Py_UCS4 c = PyUnicode_READ(kind, data, pos + t);
+            if (c > 127) {
+                PyErr_SetString(PyExc_SystemError, "non-ascii grouped digit");
+                return -1;
+            }
+            PyUnicode_WRITE(kind, data, pos + t, Py_TOUPPER(c));
+        }
     }
     pos += spec->n_grouped_digits;