Author: walter.doerwald
Date: Tue Jun 5 15:29:29 2007
New Revision: 55759
Modified:
python/branches/py3k-struni/Objects/exceptions.c
Log:
PyUnicode_FromFormat() does support %02x, so use it
for formatting the unicode decoding/encoding/translating
exception messages.
Modified: python/branches/py3k-struni/Objects/exceptions.c
==============================================================================
--- python/branches/py3k-struni/Objects/exceptions.c (original)
+++ python/branches/py3k-struni/Objects/exceptions.c Tue Jun 5 15:29:29 2007
@@ -1341,17 +1341,17 @@
if (end==start+1) {
int badchar = (int)PyUnicode_AS_UNICODE(((PyUnicodeErrorObject
*)self)->object)[start];
- char badchar_str[20];
+ const char *fmt;
if (badchar <= 0xff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
+ fmt = "'%U' codec can't encode character u'\\x%02x' in position
%zd: %U";
else if (badchar <= 0xffff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
+ fmt = "'%U' codec can't encode character u'\\u%04x' in position
%zd: %U";
else
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
+ fmt = "'%U' codec can't encode character u'\\U%08x' in position
%zd: %U";
return PyUnicode_FromFormat(
- "'%U' codec can't encode character u'\\%s' in position %zd: %U",
+ fmt,
((PyUnicodeErrorObject *)self)->encoding,
- badchar_str,
+ badchar,
start,
((PyUnicodeErrorObject *)self)->reason
);
@@ -1416,12 +1416,9 @@
return NULL;
if (end==start+1) {
- /* FromFormat does not support %02x, so format that separately */
- char byte[4];
- PyOS_snprintf(byte, sizeof(byte), "%02x",
- ((int)PyBytes_AS_STRING(((PyUnicodeErrorObject
*)self)->object)[start])&0xff);
+ int byte = (int)(PyBytes_AS_STRING(((PyUnicodeErrorObject
*)self)->object)[start]&0xff);
return PyUnicode_FromFormat(
- "'%U' codec can't decode byte 0x%s in position %zd: %U",
+ "'%U' codec can't decode byte 0x%02x in position %zd: %U",
((PyUnicodeErrorObject *)self)->encoding,
byte,
start,
@@ -1513,16 +1510,16 @@
if (end==start+1) {
int badchar = (int)PyUnicode_AS_UNICODE(((PyUnicodeErrorObject
*)self)->object)[start];
- char badchar_str[20];
+ const char *fmt;
if (badchar <= 0xff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
+ fmt = "can't translate character u'\\x%02x' in position %zd: %U";
else if (badchar <= 0xffff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
+ fmt = "can't translate character u'\\u%04x' in position %zd: %U";
else
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
+ fmt = "can't translate character u'\\U%08x' in position %zd: %U";
return PyUnicode_FromFormat(
- "can't translate character u'\\%s' in position %zd: %U",
- badchar_str,
+ fmt,
+ badchar,
start,
((PyUnicodeErrorObject *)self)->reason
);
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins