http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52608

Janne Blomqvist <jb at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-03-17
     Ever Confirmed|0                           |1

--- Comment #1 from Janne Blomqvist <jb at gcc dot gnu.org> 2012-03-17 14:25:11 
UTC ---
The following patch should fix it:

diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
index 07437f0..6521f3c 100644
--- a/libgfortran/io/write_float.def
+++ b/libgfortran/io/write_float.def
@@ -180,12 +180,6 @@ output_float (st_parameter_dt *dtp, const fnode *f, char
*buffer, size_t size,
       /* Make sure the decimal point is a '.'; depending on the
         locale, this might not be the case otherwise.  */
       digits[nbefore] = '.';
-      if (digits[0] == '0' && nbefore == 1)
-       {
-         digits++;
-         nbefore--;
-         ndigits--;
-       }
       if (p != 0)
        {
          if (p > 0)
@@ -229,6 +223,13 @@ output_float (st_parameter_dt *dtp, const fnode *f, char
*buffer, size_t size,
          nafter = d;
        }

+      while (digits[0] == '0' && nbefore > 0)
+       {
+         digits++;
+         nbefore--;
+         ndigits--;
+       }
+
       expchar = 0;
       /* If we need to do rounding ourselves, get rid of the dot by
         moving the fractional part.  */

Reply via email to