diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2009-04-30 18:12:37 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2009-04-30 18:12:37 +0300 |
commit | ee56ac9def714d225c4c7d1020390241780595c0 (patch) | |
tree | 164be18da851f117899e247478ee56e7245b26dc /libgfortran/io/intrinsics.c | |
parent | 43fcece879afabd701904209451ca9182f251c48 (diff) | |
download | gcc-ee56ac9def714d225c4c7d1020390241780595c0.zip gcc-ee56ac9def714d225c4c7d1020390241780595c0.tar.gz gcc-ee56ac9def714d225c4c7d1020390241780595c0.tar.bz2 |
Fix PR libfortran/39667
From-SVN: r147004
Diffstat (limited to 'libgfortran/io/intrinsics.c')
-rw-r--r-- | libgfortran/io/intrinsics.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libgfortran/io/intrinsics.c b/libgfortran/io/intrinsics.c index 0a894aa..0e33e84 100644 --- a/libgfortran/io/intrinsics.c +++ b/libgfortran/io/intrinsics.c @@ -46,6 +46,13 @@ PREFIX(fgetc) (const int * unit, char * c, gfc_charlen_type c_len) if (u == NULL) return -1; + fbuf_reset (u); + if (u->mode == WRITING) + { + sflush (u->s); + u->mode = READING; + } + memset (c, ' ', c_len); ret = sread (u->s, c, 1); unlock_unit (u); @@ -118,6 +125,13 @@ PREFIX(fputc) (const int * unit, char * c, if (u == NULL) return -1; + fbuf_reset (u); + if (u->mode == READING) + { + sflush (u->s); + u->mode = WRITING; + } + s = swrite (u->s, c, 1); unlock_unit (u); if (s < 0) |