diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2019-11-24 22:14:59 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2019-11-24 22:14:59 +0000 |
commit | 73af0c7b3ac036802db97377422e8a8a750a56cc (patch) | |
tree | 743a8c4630626b7b2f49c2bd5ad523adf2c83550 /libgfortran | |
parent | 859174c82493971bd1e408231e24a7724953042f (diff) | |
download | gcc-73af0c7b3ac036802db97377422e8a8a750a56cc.tar.gz |
re PR libfortran/92100 (Formatted stream IO irreproducible read with binary data in file)
2019-11-24 Jerry DeLisle <jvdelisle@gcc.ngu.org>
PR fortran/92100
io/transfer.c (data_transfer_init_worker): Use fbuf_reset
instead of fbuf_flush before the seek. Note that fbuf_reset
calls fbuf_flush and adjusts fbuf pointers.
From-SVN: r278660
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 7 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 46b96f25f16..91768c0a00f 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2019-11-24 Jerry DeLisle <jvdelisle@gcc.ngu.org> + + PR fortran/92100 + io/transfer.c (data_transfer_init_worker): Use fbuf_reset + instead of fbuf_flush before the seek. Note that fbuf_reset + calls fbuf_flush and adjusts fbuf pointers. + 2019-11-23 Thomas Koenig <tkoenig@gcc.gnu.org> Harald Anlauf <anlauf@gmx.de> diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 89f0abe9938..43b22bf5f8d 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -3309,8 +3309,9 @@ data_transfer_init_worker (st_parameter_dt *dtp, int read_flag) if (dtp->pos != dtp->u.p.current_unit->strm_pos) { - fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode); - if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1, SEEK_SET) < 0) + fbuf_reset (dtp->u.p.current_unit); + if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1, + SEEK_SET) < 0) { generate_error (&dtp->common, LIBERROR_OS, NULL); return; |