]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libfortran/79540 (FAIL: gfortran.dg/fmt_fw_d.f90 -O0 execution test)
authorJohn David Anglin <danglin@gcc.gnu.org>
Wed, 17 Apr 2019 00:22:23 +0000 (00:22 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Wed, 17 Apr 2019 00:22:23 +0000 (00:22 +0000)
PR libgfortran/79540
* io/write_float.def (build_float_string): Don't copy digits when
ndigits is negative.

From-SVN: r270402

libgfortran/ChangeLog
libgfortran/io/write_float.def

index 219b1ffd89ad1ca210d9055018f240798dad79e0..5ead90f9e4c2ff1ad0a2ad1c0983ef6f9b36660e 100644 (file)
@@ -1,3 +1,12 @@
+2019-04-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       Backport from mainline
+       2019-03-25  John David Anglin  <danglin@gcc.gnu.org>
+
+       PR libgfortran/79540
+       * io/write_float.def (build_float_string): Don't copy digits when
+       ndigits is negative.
+
 2019-02-03  Uroš Bizjak  <ubizjak@gmail.com>
 
        PR libfortran/88678
index b4971fd335e883583a6ff62ba75516c8596137dc..e303f7d73a8517446f138c34b5d69ffdff668e96 100644 (file)
@@ -620,14 +620,15 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer,
     }
 
   /* Set digits after the decimal point, padding with zeros.  */
-  if (nafter > 0)
+  if (ndigits >= 0 && nafter > 0)
     {
       if (nafter > ndigits)
        i = ndigits;
       else
        i = nafter;
 
-      memcpy (put, digits, i);
+      if (i > 0)
+       memcpy (put, digits, i);
       while (i < nafter)
        put[i++] = '0';