From: Ben Pfaff Date: Mon, 4 Jul 2011 21:47:35 +0000 (-0700) Subject: format: Use max width for over-max decimals in fmt_fix(). X-Git-Tag: v0.7.9~213 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c21ea20071516164a23ddd576ba394996368dbc;p=pspp-builds.git 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. --- 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. */