diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 6ce8b5f9fcfa801a32cd3e8d762610878f7072e9..7e741b3b502353293ae144b8914a1c61dbd879a9 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -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 diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def index 1e2dee89d835e886573038a913992502740299bc..c63db4e77ef6076a7f5b9721431642d4a8b5ebb8 100644 --- a/libgfortran/io/write_float.def +++ b/libgfortran/io/write_float.def @@ -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';