diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2009-09-19 04:45:00 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2009-09-19 04:45:00 +0000 |
commit | b5e7280daa65db14481b2babb55a36774f62e720 (patch) | |
tree | 2842919674deb6c28b088bcac92b75ef26281fe7 | |
parent | bf187ce8befc5d9e721d2f06c5c4ee7b69bebbf4 (diff) | |
download | gcc-b5e7280daa65db14481b2babb55a36774f62e720.zip gcc-b5e7280daa65db14481b2babb55a36774f62e720.tar.gz gcc-b5e7280daa65db14481b2babb55a36774f62e720.tar.bz2 |
re PR fortran/41328 (bad iostat when reading DOS file in a character array (non-advancing))
2009-09-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/41328
* gfortran.dg/cr_lf.f90: Modify test to include check that no EOR with
EOF works.
From-SVN: r151878
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/cr_lf.f90 | 36 |
2 files changed, 38 insertions, 4 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3604d5b..ed29399 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-09-18 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libgfortran/41328 + * gfortran.dg/cr_lf.f90: Modify test to include check that no EOR with + EOF works. + 2009-09-18 Jason Merrill <jason@redhat.com> * g++.dg/cpp0x/nolinkage1{.C,.h,a.cc}: New. diff --git a/gcc/testsuite/gfortran.dg/cr_lf.f90 b/gcc/testsuite/gfortran.dg/cr_lf.f90 index 855e703..eb5500e 100644 --- a/gcc/testsuite/gfortran.dg/cr_lf.f90 +++ b/gcc/testsuite/gfortran.dg/cr_lf.f90 @@ -4,11 +4,17 @@ ! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org> program main implicit none - integer :: iostat, n_chars_read + integer :: iostat, n_chars_read, k character(len=1) :: buffer(64) = "" - open( unit=10, form="formatted", access="stream", status="scratch") - write(10, fmt="(a)", advance="no") "a\rb\rc\r" - rewind(10) + character (len=80) :: u + + ! Set up the test file with normal file end. + open(unit=10, file="crlftest", form="unformatted", access="stream",& + & status="replace") + write(10) "a\rb\rc\r" ! CR at the end of each record. + close(10, status="keep") + + open(unit=10, file="crlftest", form="formatted", status="old") read( unit=10, fmt='(64A)', advance='NO', iostat=iostat, & size=n_chars_read ) buffer @@ -33,4 +39,26 @@ program main if (n_chars_read.ne.0) call abort if (any(buffer(1:n_chars_read).ne."a")) call abort if (.not.is_iostat_end(iostat)) call abort + close(10, status="delete") + + ! Set up the test file with normal file end. + open(unit=10, file="crlftest", form="unformatted", access="stream",& + & status="replace") + write(10) "a\rb\rc\rno end of line marker" ! Note, no CR at end of file. + close(10, status="keep") + + open(unit=10, file="crlftest", status='old') + + do k = 1, 10 + read(10,'(a80)',end=101,err=100) u + !print *,k,' : ',u(1:len_trim(u)) + enddo + +100 continue + close(10, status="delete") + call abort + +101 continue + close(10, status="delete") + if (u(1:len_trim(u)).ne."no end of line marker") call abort end program main |