re PR fortran/31366 ([4.2 only] Last record truncated for read after short write...
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 1 Apr 2007 15:29:05 +0000 (15:29 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 1 Apr 2007 15:29:05 +0000 (15:29 +0000)
2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/31366
* gfortran.dg/direct_io_6.f90: New test.

2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/31207
* gfortran.dg/advance_5.f90: New test.
* gfortran.dg/advance_6.f90: New test.

From-SVN: r123402

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/advance_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/advance_5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/direct_io_6.f90 [new file with mode: 0644]

index b524f7bddcb5accb96459c4e8eb81eb8a533e726..c04ae81b96f4d1aadda0d6e7a046c4e958fb8d8f 100644 (file)
@@ -1,3 +1,14 @@
+2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/31366
+       * gfortran.dg/direct_io_6.f90: New test.
+       
+2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/31207
+       * gfortran.dg/advance_5.f90: New test.
+       * gfortran.dg/advance_6.f90: New test.
+
 2007-04-01  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * g++.dg/ext/dllimport6.C: Remove extra ';'.
diff --git a/gcc/testsuite/gfortran.dg/advance_4.f90 b/gcc/testsuite/gfortran.dg/advance_4.f90
new file mode 100644 (file)
index 0000000..ab22311
--- /dev/null
@@ -0,0 +1,10 @@
+! { dg-do run }
+! PR31207 Last record truncated for read after short write
+program main
+  character(10) :: answer
+  write (12,'(A,T2,A)',advance="no") 'XXXXXX','ABCD'
+  close (12)
+  read (12, '(6A)') answer
+  close (12, status="delete")
+  if (answer /= "XABCDX") call abort()
+end program main
\ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/advance_5.f90 b/gcc/testsuite/gfortran.dg/advance_5.f90
new file mode 100644 (file)
index 0000000..3a48e53
--- /dev/null
@@ -0,0 +1,17 @@
+! { dg-do run }
+! PR31207 Last record truncated for read after short write.
+character(len=20) :: b
+! write something no advance
+open(10,file="fort.10",position="rewind")
+write(10, '(a,t1,a)',advance='no') 'xxxxxx', 'abc'
+close(10)
+! append some data
+open(10,file="fort.10",position="append")
+write(10, '(a)') 'def'
+close(10)
+! check what is in the first record
+open(10,file="fort.10",position="rewind")
+read(10,'(a)') b
+close(10, status="delete")
+if (b.ne."abcxxx") call abort()
+end
diff --git a/gcc/testsuite/gfortran.dg/direct_io_6.f90 b/gcc/testsuite/gfortran.dg/direct_io_6.f90
new file mode 100644 (file)
index 0000000..d090704
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do run }
+! pr31366 last record truncated for read after short write, direct access file.
+! test case derived from pr, submitted by jerry delisle  <jvdelisle@gcc.gnu.org
+      program test
+      character(len=8) :: as_written, as_read
+      character(1) :: byte
+      as_written = "12345678"
+      open (76, access="direct", recl=12, status="scratch")
+      write(76, rec=1) as_written
+      write(76, rec=2) as_written
+      read(76, rec=1) as_read, byte, byte, byte, byte
+      read(76, rec=2, err=3) as_read, byte, byte, byte, byte
+      stop
+  3   call abort()
+      end program test
+