From 7c21ea20071516164a23ddd576ba394996368dbc Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 4 Jul 2011 14:47:35 -0700 Subject: [PATCH] format: Use max width for over-max decimals in fmt_fix(). In fmt_fix(), requesting more decimals than are possible did not increase the width at all. It makes better sense to use the maximum width and maximum decimals for this case, so this commit makes that change. --- src/data/format.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/data/format.c b/src/data/format.c index 559ab662..3c407f4a 100644 --- a/src/data/format.c +++ b/src/data/format.c @@ -516,18 +516,15 @@ fmt_fix (struct fmt_spec *fmt, bool for_input) step = fmt_step_width (fmt->type); fmt->w = ROUND_DOWN (fmt->w, step); - /* First, if FMT has more decimal places than allowed, attempt - to increase FMT's width until that number of decimal places - can be achieved. */ - if (fmt->d > fmt_max_decimals (fmt->type, fmt->w, for_input)) + /* If FMT has more decimal places than allowed, attempt to increase FMT's + width until that number of decimal places can be achieved. */ + if (fmt->d > fmt_max_decimals (fmt->type, fmt->w, for_input) + && fmt_takes_decimals (fmt->type)) { - int w; - for (w = fmt->w; w <= max_w; w++) - if (fmt_max_decimals (fmt->type, w, for_input) >= fmt->d) - { - fmt->w = w; - break; - } + int max_w = fmt_max_width (fmt->type, for_input); + for (; fmt->w < max_w; fmt->w++) + if (fmt->d <= fmt_max_decimals (fmt->type, fmt->w, for_input)) + break; } /* Clamp decimals to those allowed by format and width. */ -- 2.30.2