OSDN Git Service

2010-03-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Mar 2010 03:25:04 +0000 (03:25 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Mar 2010 03:25:04 +0000 (03:25 +0000)
PR libfortran/43265
* gfortran.dg/read_eof_8.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157811 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 3f9f0b2..34fc037 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/43265
+       * gfortran.dg/read_eof_8.f90: New test.
+
 2010-03-29  Jason Merrill  <jason@redhat.com>
 
        * gcc.dg/cpp/include6.c: Change [] to ().
diff --git a/gcc/testsuite/gfortran.dg/read_eof_8.f90 b/gcc/testsuite/gfortran.dg/read_eof_8.f90
new file mode 100644 (file)
index 0000000..7436a2b
--- /dev/null
@@ -0,0 +1,26 @@
+! { dg-do run }
+! PR43265: See comment #26 in the PR.  Before patch,
+! the test case would fail to read the last line of the file.
+! Thanks to Jean-Baptiste Faure for providing the initial test case.
+program test
+  character (len=6) :: line
+  integer :: n, k=0
+  open(unit=25,file="test.dat",status="replace", &
+       & form="unformatted", access="stream")
+  write(25) "Line 1" // char(10)
+  write(25) "Line 2" // char(10)
+  write(25) "Line 3" // char(10)
+  write(25) "Line 4" // char(10)
+  write(25) "Line 5" ! No EOR marker on the last line.
+  close(25, status="keep")
+  open(25, file="test.dat", status="old")
+  do n=1,10
+   read(25,'(a)',end=100,err=101) line
+   k = k+1
+  enddo
+  call abort
+100 if (k /= 5) call abort
+  stop
+101 call abort
+end program test
+