diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2012-02-24 00:44:47 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2012-02-24 00:44:47 (GMT) |
commit | 90f50d4df9e21093f006427fd7ed11a0d704f792 (patch) | |
tree | 0651d6bff923a47322b798b554cbac68c34c845d /Python/formatter_unicode.c | |
parent | 6858cabb265ed752aeb27cacbacd58817daaacaa (diff) | |
download | cpython-90f50d4df9e21093f006427fd7ed11a0d704f792.zip cpython-90f50d4df9e21093f006427fd7ed11a0d704f792.tar.gz cpython-90f50d4df9e21093f006427fd7ed11a0d704f792.tar.bz2 |
Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Diffstat (limited to 'Python/formatter_unicode.c')
-rw-r--r-- | Python/formatter_unicode.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c index 94f8047..58e66e0 100644 --- a/Python/formatter_unicode.c +++ b/Python/formatter_unicode.c @@ -529,6 +529,9 @@ calc_number_widths(NumberFieldWidths *spec, Py_ssize_t n_prefix, if (spec->n_lpadding || spec->n_spadding || spec->n_rpadding) *maxchar = Py_MAX(*maxchar, format->fill_char); + if (spec->n_decimal) + *maxchar = Py_MAX(*maxchar, PyUnicode_MAX_CHAR_VALUE(locale->decimal_point)); + return spec->n_lpadding + spec->n_sign + spec->n_prefix + spec->n_spadding + spec->n_grouped_digits + spec->n_decimal + spec->n_remainder + spec->n_rpadding; @@ -548,10 +551,7 @@ fill_number(PyObject *out, Py_ssize_t pos, const NumberFieldWidths *spec, Py_ssize_t d_pos = d_start; unsigned int kind = PyUnicode_KIND(out); void *data = PyUnicode_DATA(out); - -#ifndef NDEBUG Py_ssize_t r; -#endif if (spec->n_lpadding) { PyUnicode_Fill(out, pos, pos + spec->n_lpadding, fill_char); @@ -593,18 +593,15 @@ fill_number(PyObject *out, Py_ssize_t pos, const NumberFieldWidths *spec, if (pdigits == NULL) return -1; } -#ifndef NDEBUG - r = -#endif - _PyUnicode_InsertThousandsGrouping( + r = _PyUnicode_InsertThousandsGrouping( out, pos, spec->n_grouped_digits, pdigits + kind * d_pos, spec->n_digits, spec->n_min_width, locale->grouping, locale->thousands_sep, NULL); -#ifndef NDEBUG + if (r == -1) + return -1; assert(r == spec->n_grouped_digits); -#endif if (PyUnicode_KIND(digits) < kind) PyMem_Free(pdigits); d_pos += spec->n_digits; |