From 9adcdfb36597a9aeee255166550511aff2f5da73 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Tue, 26 Apr 2005 15:27:11 -0400 Subject: [PATCH] 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 --- libgfortran/ChangeLog | 9 +++++++-- libgfortran/io/rewind.c | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 027ad271f99..52f6c9f88fe 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,5 +1,10 @@ -2005-04-18 Paul Thomas - Jerry DeLisle +2005-04-26 David Edelsohn + + * io/rewind.c (st_rewind): Flush the stream when resetting the mode + from WRITING to READING. + +2005-04-22 Paul Thomas + Jerry DeLisle * 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 f0b0e90e454..48d57bafaa5 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) -- 2.30.2