[Python-checkins] cpython: Fix UTF-7 encoder on Windows

victor.stinner python-checkins at python.org
Thu Nov 10 20:11:05 CET 2011


http://hg.python.org/cpython/rev/24282b901ad6
changeset:   73480:24282b901ad6
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Thu Nov 10 20:12:49 2011 +0100
summary:
  Fix UTF-7 encoder on Windows

files:
  Objects/unicodeobject.c |  10 ++++------
  1 files changed, 4 insertions(+), 6 deletions(-)


diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -4061,7 +4061,7 @@
 
     start = out = PyBytes_AS_STRING(v);
     for (i = 0; i < len; ++i) {
-        Py_UNICODE ch = PyUnicode_READ(kind, data, i);
+        Py_UCS4 ch = PyUnicode_READ(kind, data, i);
 
         if (inShift) {
             if (ENCODE_DIRECT(ch, !base64SetO, !base64WhiteSpace)) {
@@ -4099,7 +4099,6 @@
         }
         continue;
 encode_char:
-#ifdef Py_UNICODE_WIDE
         if (ch >= 0x10000) {
             /* code first surrogate */
             base64bits += 16;
@@ -4111,7 +4110,6 @@
             /* prepare second surrogate */
             ch =  0xDC00 | ((ch-0x10000) & 0x3FF);
         }
-#endif
         base64bits += 16;
         base64buffer = (base64buffer << 16) | ch;
         while (base64bits >= 6) {
@@ -4138,7 +4136,7 @@
     PyObject *tmp = PyUnicode_FromUnicode(s, size);
     if (tmp == NULL)
         return NULL;
-    result = _PyUnicode_EncodeUTF7(tmp, base64SetO, 
+    result = _PyUnicode_EncodeUTF7(tmp, base64SetO,
                                    base64WhiteSpace, errors);
     Py_DECREF(tmp);
     return result;
@@ -5462,7 +5460,7 @@
     kind = PyUnicode_KIND(str);
     data = PyUnicode_DATA(str);
     len = PyUnicode_GET_LENGTH(str);
-    
+
     pairs = 0;
     if (kind == PyUnicode_4BYTE_KIND)
         for (i = 0; i < len; i++)
@@ -6157,7 +6155,7 @@
     case PyUnicode_2BYTE_KIND: expandsize = 6; break;
     case PyUnicode_4BYTE_KIND: expandsize = 10; break;
     }
-        
+
     if (len > PY_SSIZE_T_MAX / expandsize)
         return PyErr_NoMemory();
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list