aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorDavid Edelsohn <dje@gcc.gnu.org>2005-04-26 15:27:11 -0400
committerDavid Edelsohn <dje@gcc.gnu.org>2005-04-26 15:27:11 -0400
commit9adcdfb36597a9aeee255166550511aff2f5da73 (patch)
treeed58975099dfe96e8daf9ff262535e7afe4c80db /libgfortran
parent2705487a7ef408a74cb31e729a962cacce39749d (diff)
downloadgcc-9adcdfb36597a9aeee255166550511aff2f5da73.zip
gcc-9adcdfb36597a9aeee255166550511aff2f5da73.tar.gz
gcc-9adcdfb36597a9aeee255166550511aff2f5da73.tar.bz2
rewind.c (st_rewind): Flush the stream when resetting the mode from WRITING to READING.
* io/rewind.c (st_rewind): Flush the stream when resetting the mode from WRITING to READING. From-SVN: r98788
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog9
-rw-r--r--libgfortran/io/rewind.c10
2 files changed, 14 insertions, 5 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 027ad27..52f6c9f 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,5 +1,10 @@
-2005-04-18 Paul Thomas <pault@gcc.gnu.org>
- Jerry DeLisle <jvdelisle@verizon.net>
+2005-04-26 David Edelsohn <edelsohn@gnu.org>
+
+ * io/rewind.c (st_rewind): Flush the stream when resetting the mode
+ from WRITING to READING.
+
+2005-04-22 Paul Thomas <pault@gcc.gnu.org>
+ Jerry DeLisle <jvdelisle@verizon.net>
* io/write.c (nml_write_obj): Provide 1 more byte for ext_name.
* io/list_read.c (nml_get_obj_data): Put extra brackets in get_mem
diff --git a/libgfortran/io/rewind.c b/libgfortran/io/rewind.c
index f0b0e90..48d57ba 100644
--- a/libgfortran/io/rewind.c
+++ b/libgfortran/io/rewind.c
@@ -54,9 +54,13 @@ st_rewind (void)
/* If we have been writing to the file, the last written record
is the last record in the file, so truncate the file now.
Reset to read mode so two consecutive rewind statements
- don't delete the file contents. */
- if (u->mode==WRITING)
- struncate(u->s);
+ don't delete the file contents. Flush buffer when switching
+ mode. */
+ if (u->mode == WRITING)
+ {
+ flush (u->s);
+ struncate (u->s);
+ }
u->mode = READING;
u->last_record = 0;
if (sseek (u->s, 0) == FAILURE)