Patch #102940: use only printable Unicode chars in reporting
incorrect % characters; characters outside the printable range are
replaced with '?'
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 4438e89..fe591b5 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5069,7 +5069,8 @@
PyErr_Format(PyExc_ValueError,
"unsupported format character '%c' (0x%x) "
"at index %i",
- c, c, fmt -1 - PyUnicode_AS_UNICODE(uformat));
+ (31<=c && c<=126) ? c : '?',
+ c, fmt -1 - PyUnicode_AS_UNICODE(uformat));
goto onError;
}
if (sign) {