From: Victor Stinner Date: Mon, 21 Nov 2011 00:17:27 +0000 (+0100) Subject: UnicodeTranslateError uses the new Unicode API X-Git-Tag: v3.3.0a1~785 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=53b33e767d9aa85f2bf3add5850499596f9d0558;p=python UnicodeTranslateError uses the new Unicode API The index is a character index, not a index in a Py_UNICODE* string. --- diff --git a/Objects/exceptions.c b/Objects/exceptions.c index c8f90b89a0..a1b79a86bc 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -1751,8 +1751,8 @@ UnicodeTranslateError_str(PyObject *self) if (reason_str == NULL) goto done; - if (uself->start < PyUnicode_GET_SIZE(uself->object) && uself->end == uself->start+1) { - int badchar = (int)PyUnicode_AS_UNICODE(uself->object)[uself->start]; + if (uself->start < PyUnicode_GET_LENGTH(uself->object) && uself->end == uself->start+1) { + Py_UCS4 badchar = PyUnicode_ReadChar(uself->object, uself->start); const char *fmt; if (badchar <= 0xff) fmt = "can't translate character '\\x%02x' in position %zd: %U"; @@ -1762,7 +1762,7 @@ UnicodeTranslateError_str(PyObject *self) fmt = "can't translate character '\\U%08x' in position %zd: %U"; result = PyUnicode_FromFormat( fmt, - badchar, + (int)badchar, uself->start, reason_str );