diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 14a6349f023..8458be34da2 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2004-07-08 Andreas Krebbel + + PR fortran/16291 + * libgfortran/io/write.c: (write_float): Added length check. + Remove pointless memset calls. + 2004-07-04 Bud Davis Paul Brook @@ -5,9 +11,9 @@ * io/transfer.c(us_write): set recl for seq unform writes to max size. * io/transfer.c(data_transfer_init): handle un-opened seq unform unit. * io/unix.c(fd_alloc_w_at): handle requests at start, fd_flush at - right time. + right time. * io/unix.c(is_seekable): set based upon the file/device, not the - method being used to access it (fd or mmap). + method being used to access it (fd or mmap). * io/unix.c(fd_flush): don't set file_size if !seekable. * io/unix.c(fd_truncate: ditto. diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index 3602c1b9157..749a34a4834 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -535,10 +535,10 @@ write_float (fnode *f, const char *source, int len) memcpy(p + nb - 8, "Infinity", 8); else memcpy(p + nb - 3, "Inf", 3); - if (nb < 8) - memset(p + nb - 4, fin, 1); + if (nb < 8 && nb > 3) + p[nb - 4] = fin; else if (nb > 8) - memset(p + nb - 9, fin, 1); + p[nb - 9] = fin; } else memcpy(p + nb - 3, "NaN", 3);