Change PyErr_Format() to generate a unicode string (by using
PyUnicode_FromFormatV() instead of PyString_FromFormatV()).
Change calls to PyErr_Format() to benefit from the new format
specifiers: Using %S, object instead of %s, PyString_AS_STRING(object)
with will work with unicode objects too.
diff --git a/Python/codecs.c b/Python/codecs.c
index ddd1935..3aa1f38 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -443,18 +443,13 @@
{
PyObject *type = PyObject_GetAttrString(exc, "__class__");
if (type != NULL) {
- PyObject *name = PyObject_GetAttrString(type, "__name__");
- Py_DECREF(type);
- if (name != NULL) {
- PyObject *string = PyObject_Str(name);
- Py_DECREF(name);
- if (string != NULL) {
- PyErr_Format(PyExc_TypeError,
- "don't know how to handle %.400s in error callback",
- PyString_AS_STRING(string));
- Py_DECREF(string);
- }
- }
+ PyObject *name = PyObject_GetAttrString(type, "__name__");
+ Py_DECREF(type);
+ if (name != NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "don't know how to handle %S in error callback", name);
+ Py_DECREF(name);
+ }
}
}