diff options
author | bdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-27 07:59:30 +0000 |
---|---|---|
committer | bdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-27 07:59:30 +0000 |
commit | 95bfa7b376344bf3e0dab4b515b34ffd77414e24 (patch) | |
tree | 4050f4a405b432378b98cbcd6661afa4a1f0be61 /gcc/testsuite | |
parent | 5e1a75c5bb2b9881d906142ed8e1a320ec1dbfc5 (diff) | |
download | gcc-95bfa7b376344bf3e0dab4b515b34ffd77414e24.tar.gz |
2004-08-27 Bud Davis <bdavis9659@comcast.net>
PR fortran/16597
* io/io.h: created typedef for unit_mode.
* io/io.h (gfc_unit): added mode to unit structure.
* io/transfer.c (data_transfer_init): flush if a write then
read is done on a unit (direct access files).
* io/rewind.c (st_rewind): Used unit mode instead of global.
* gfortran.dg/pr16597.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86654 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr16597.f90 | 27 |
2 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9b73b6dea53..18f803758a6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-08-27 Bud Davis <bdavis9659@comcast.net> + + PR fortran/16597 + * gfortran.dg/pr16597.f90: New test. + 2004-08-26 Joseph S. Myers <jsm@polyomino.org.uk> PR c/13801 diff --git a/gcc/testsuite/gfortran.dg/pr16597.f90 b/gcc/testsuite/gfortran.dg/pr16597.f90 new file mode 100644 index 00000000000..ff1dcb838ae --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr16597.f90 @@ -0,0 +1,27 @@ +! pr 16597 +! libgfortran +! reading a direct access record after it was written did +! not always return the correct data. + + program gfbug4 + implicit none + + integer strlen + parameter (strlen = 4) + + integer iunit + character string *4 + + iunit = 99 + open (UNIT=iunit,FORM='unformatted',ACCESS='direct',RECL=strlen) + write (iunit, rec=1) 'ABCD' + read (iunit, rec=1) string + close (iunit) + if (string.ne.'ABCD') call abort + + open (UNIT=iunit,FORM='unformatted',ACCESS='direct',STATUS='scratch',RECL=strlen) + write (iunit, rec=1) 'ABCD' + read (iunit, rec=1) string + close (iunit) + if (string.ne.'ABCD') call abort + end |