summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-02-25 23:16:57 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-02-25 23:16:57 (GMT)
commit36025478bff1012dbb6d9312aca4a798ee089e8e (patch)
tree530f1fe64ece89ae682fcb9115b5087205511688 /Objects
parentc19038983425fee91958d51b3eefcb56dfc9f0f1 (diff)
parentd21b58c05d5e187bb736dc913da6ddefd9c9d8b3 (diff)
downloadcpython-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.c14
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)