summaryrefslogtreecommitdiffstats
path: root/libgfortran
diff options
context:
space:
mode:
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-10 03:43:09 +0000
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-10 03:43:09 +0000
commit8ebb828508a4a55565bd200f113b6c92fbef81ef (patch)
tree6dfb012b1bf45857558cff7d92f6bdd8d50aa04d /libgfortran
parentddb1d2a923f007035ba2c189c3848d90a71a566f (diff)
downloadppe42-gcc-8ebb828508a4a55565bd200f113b6c92fbef81ef.tar.gz
ppe42-gcc-8ebb828508a4a55565bd200f113b6c92fbef81ef.zip
PR fortran/19872
* io/transfer.c (data_transfer_init): truncate an existing file on the first write. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97937 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog7
-rw-r--r--libgfortran/io/transfer.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index ba0257d69b6..46fc3b3dedf 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2005-04-09 Bud Davis <bdavis@gfortran.org>
+ Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/19872
+ * io/transfer.c (data_transfer_init): truncate an existing
+ file on the first write.
+
2005-04-09 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/19106
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 4d4832395d9..f86a8527245 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1103,6 +1103,13 @@ data_transfer_init (int read_flag)
generate_error (ERROR_OS, NULL);
}
+ /* Overwriting an existing sequential file ?
+ it is always safe to truncate the file on the first write */
+ if (g.mode == WRITING
+ && current_unit->flags.access == ACCESS_SEQUENTIAL
+ && current_unit->current_record == 0)
+ struncate(current_unit->s);
+
current_unit->mode = g.mode;
/* Set the initial value of flags. */
OpenPOWER on IntegriCloud