Close #14648: Compute correctly maxchar in str.format() for substrin
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index 5e5b19f..e1c00df 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -716,7 +716,7 @@
     Py_ssize_t pos;
     Py_ssize_t len = PyUnicode_GET_LENGTH(value);
     PyObject *result = NULL;
-    Py_UCS4 maxchar = 127;
+    Py_UCS4 maxchar;
 
     /* sign is not allowed on strings */
     if (format->sign != '\0') {
@@ -747,11 +747,9 @@
         len = format->precision;
     }
 
-    if (len)
-        maxchar = PyUnicode_MAX_CHAR_VALUE(value);
-
     calc_padding(len, format->width, format->align, &lpad, &rpad, &total);
 
+    maxchar = _PyUnicode_FindMaxChar(value, 0, len);
     if (lpad != 0 || rpad != 0)
         maxchar = Py_MAX(maxchar, format->fill_char);