diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-02-25 23:16:57 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-02-25 23:16:57 (GMT) |
commit | 36025478bff1012dbb6d9312aca4a798ee089e8e (patch) | |
tree | 530f1fe64ece89ae682fcb9115b5087205511688 /Objects | |
parent | c19038983425fee91958d51b3eefcb56dfc9f0f1 (diff) | |
parent | d21b58c05d5e187bb736dc913da6ddefd9c9d8b3 (diff) | |
download | cpython-36025478bff1012dbb6d9312aca4a798ee089e8e.zip cpython-36025478bff1012dbb6d9312aca4a798ee089e8e.tar.gz cpython-36025478bff1012dbb6d9312aca4a798ee089e8e.tar.bz2 |
(Merge 3.3) Issue #17223: Fix PyUnicode_FromUnicode() for string of 1 character
outside the range U+0000-U+10ffff.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/unicodeobject.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 4d38049..2175655 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -241,7 +241,7 @@ static int unicode_modifiable(PyObject *unicode); static PyObject * -_PyUnicode_FromUCS1(const unsigned char *s, Py_ssize_t size); +_PyUnicode_FromUCS1(const Py_UCS1 *s, Py_ssize_t size); static PyObject * _PyUnicode_FromUCS2(const Py_UCS2 *s, Py_ssize_t size); static PyObject * @@ -432,7 +432,7 @@ unicode_result_wchar(PyObject *unicode) if (len == 1) { wchar_t ch = _PyUnicode_WSTR(unicode)[0]; - if (ch < 256) { + if ((Py_UCS4)ch < 256) { PyObject *latin1_char = get_latin1_char((unsigned char)ch); Py_DECREF(unicode); return latin1_char; @@ -1757,7 +1757,7 @@ PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size) /* Single character Unicode objects in the Latin-1 range are shared when using this constructor */ - if (size == 1 && *u < 256) + if (size == 1 && (Py_UCS4)*u < 256) return get_latin1_char((unsigned char)*u); /* If not empty and not single character, copy the Unicode data @@ -1865,7 +1865,7 @@ _PyUnicode_FromASCII(const char *buffer, Py_ssize_t size) PyObject *unicode; if (size == 1) { #ifdef Py_DEBUG - assert(s[0] < 128); + assert((unsigned char)s[0] < 128); #endif return get_latin1_char(s[0]); } @@ -1907,7 +1907,7 @@ align_maxchar(Py_UCS4 maxchar) } static PyObject* -_PyUnicode_FromUCS1(const unsigned char* u, Py_ssize_t size) +_PyUnicode_FromUCS1(const Py_UCS1* u, Py_ssize_t size) { PyObject *res; unsigned char max_char; @@ -2792,8 +2792,8 @@ PyUnicode_FromOrdinal(int ordinal) return NULL; } - if (ordinal < 256) - return get_latin1_char(ordinal); + if ((Py_UCS4)ordinal < 256) + return get_latin1_char((unsigned char)ordinal); v = PyUnicode_New(1, ordinal); if (v == NULL) |