Mercurial > cpython-lru_cache-weakref
diff Python/formatter_unicode.c @ 83067:7132bca093ad
Close #16757: Avoid calling the expensive _PyUnicode_FindMaxChar() function
when possible
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Wed, 03 Apr 2013 02:02:33 +0200 |
| parents | 10e59553a8de |
| children | 4ce2a4e75ad3 |
line wrap: on
line diff
--- a/Python/formatter_unicode.c Wed Apr 03 01:48:39 2013 +0200 +++ b/Python/formatter_unicode.c Wed Apr 03 02:02:33 2013 +0200 @@ -771,9 +771,13 @@ calc_padding(len, format->width, format->align, &lpad, &rpad, &total); - maxchar = _PyUnicode_FindMaxChar(value, 0, len); + maxchar = writer->maxchar; if (lpad != 0 || rpad != 0) maxchar = Py_MAX(maxchar, format->fill_char); + if (PyUnicode_MAX_CHAR_VALUE(value) > maxchar) { + Py_UCS4 valmaxchar = _PyUnicode_FindMaxChar(value, 0, len); + maxchar = Py_MAX(maxchar, valmaxchar); + } /* allocate the resulting string */ if (_PyUnicodeWriter_Prepare(writer, total, maxchar) == -1)
