@@ -954,7 +954,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
}
tail->u.real.d = fmt->value;
- /* Look for optional exponent */
+ /* Look for optional exponent, not allowed for FMT_D */
+ if (t == FMT_D)
+ break;
u = format_lex (fmt);
if (u != FMT_E)
fmt->saved_token = u;
@@ -497,7 +497,9 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer,
else if (f->u.real.e == 0)
{
/* Zero width specified, no leading zeros in exponent */
- if (e > 99 || e < -99)
+ if (e > 999 || e < -999)
+ edigits = 6;
+ else if (e > 99 || e < -99)
edigits = 5;
else if (e > 9 || e < -9)
edigits = 4;