From 0e36826a045d4a7c5ea3df5438b522dbfc8afa9b Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 10 Nov 2011 20:12:49 +0100 Subject: [PATCH] Fix UTF-7 encoder on Windows --- Objects/unicodeobject.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 70c75c98edff..6174998e1a9f 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -4061,7 +4061,7 @@ _PyUnicode_EncodeUTF7(PyObject *str, 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 @@ _PyUnicode_EncodeUTF7(PyObject *str, } continue; encode_char: -#ifdef Py_UNICODE_WIDE if (ch >= 0x10000) { /* code first surrogate */ base64bits += 16; @@ -4111,7 +4110,6 @@ encode_char: /* prepare second surrogate */ ch = 0xDC00 | ((ch-0x10000) & 0x3FF); } -#endif base64bits += 16; base64buffer = (base64buffer << 16) | ch; while (base64bits >= 6) { @@ -4138,7 +4136,7 @@ PyUnicode_EncodeUTF7(const Py_UNICODE *s, 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 @@ _PyUnicode_EncodeUTF16(PyObject *str, 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 @@ PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode) case PyUnicode_2BYTE_KIND: expandsize = 6; break; case PyUnicode_4BYTE_KIND: expandsize = 10; break; } - + if (len > PY_SSIZE_T_MAX / expandsize) return PyErr_NoMemory(); -- 2.47.3