summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorbdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-27 07:59:30 +0000
committerbdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-27 07:59:30 +0000
commit95bfa7b376344bf3e0dab4b515b34ffd77414e24 (patch)
tree4050f4a405b432378b98cbcd6661afa4a1f0be61 /gcc/testsuite
parent5e1a75c5bb2b9881d906142ed8e1a320ec1dbfc5 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr16597.f9027
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