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)