re PR libfortran/79540 (FAIL: gfortran.dg/fmt_fw_d.f90 -O0 execution test)
authorJohn David Anglin <danglin@gcc.gnu.org>
Mon, 25 Mar 2019 11:48:36 +0000 (11:48 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Mon, 25 Mar 2019 11:48:36 +0000 (11:48 +0000)
PR libgfortran/79540
* io/write_float.def (build_float_string): Don't copy digits when
ndigits is negative.

From-SVN: r269911

libgfortran/ChangeLog
libgfortran/io/write_float.def

index 6ce8b5f9fcfa801a32cd3e8d762610878f7072e9..7e741b3b502353293ae144b8914a1c61dbd879a9 100644 (file)
@@ -1,3 +1,9 @@
+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-03-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR libgfortran/89593
index 1e2dee89d835e886573038a913992502740299bc..c63db4e77ef6076a7f5b9721431642d4a8b5ebb8 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';