re PR libfortran/24719 (Nonadvancing read does not read more than 1 line)
2005-11-11 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/24719 gfortran.dg/read_noadvance.f90: New test. PR libgfortran/24699 gfortran.dg/fmt_t_2.f90: New test. PR libgfortran/24785 gfortran.dg/read_x_eor.f90: New test. PR libgfortran/24584 gfortran.dg/namelist_empty.f90: Rename test. PR libgfortran/24489 gfortran/read_eor.f90: Rename test. From-SVN: r106798
This commit is contained in:
parent
740f04ef02
commit
2999dd1780
5 changed files with 89 additions and 0 deletions
27
gcc/testsuite/gfortran.dg/fmt_t_2.f90
Normal file
27
gcc/testsuite/gfortran.dg/fmt_t_2.f90
Normal file
|
@ -0,0 +1,27 @@
|
|||
! { dg-options "" }
|
||||
! { dg-do run }
|
||||
! pr24699, handle end-of-record on READ with T format
|
||||
! test contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
character*132 :: foost1, foost2, foost3
|
||||
open (11, status="scratch", action="readwrite")
|
||||
write(11, '(a)') "ab cdefghijkl mnop qrst"
|
||||
write(11, '(a)') "123456789 123456789 123456789"
|
||||
write(11, '(a)') " Now is the time for all good."
|
||||
rewind(11)
|
||||
|
||||
read (11, '(a040,t1,040a)', end = 999) foost1 , foost2
|
||||
if (foost1.ne.foost2) call abort()
|
||||
|
||||
read (11, '(a032,t2,a032t3,a032)', end = 999) foost1 , foost2, foost3
|
||||
if (foost1(1:32).ne."123456789 123456789 123456789 ") call abort()
|
||||
if (foost2(1:32).ne."23456789 123456789 123456789 ") call abort()
|
||||
if (foost3(1:32).ne."3456789 123456789 123456789 ") call abort()
|
||||
|
||||
read (11, '(a017,t1,a0017)', end = 999) foost1 , foost2
|
||||
if (foost1.ne.foost2) call abort()
|
||||
if (foost2(1:17).ne." Now is the time ") call abort()
|
||||
goto 1000
|
||||
999 call abort()
|
||||
1000 continue
|
||||
close(11)
|
||||
end
|
17
gcc/testsuite/gfortran.dg/namelist_empty.f90
Normal file
17
gcc/testsuite/gfortran.dg/namelist_empty.f90
Normal file
|
@ -0,0 +1,17 @@
|
|||
! pr24584, segfault on namelist reading an empty string
|
||||
! Contributed by Jerry DeLisle <jvdelisle@verizon.net>
|
||||
implicit none
|
||||
character*20 temp
|
||||
character(len=10) var
|
||||
namelist /input/ var
|
||||
var = 'Howdy'
|
||||
open(unit=7, status="scratch")
|
||||
temp = ' var=''''' ! var='' in the file
|
||||
write(7,'(A6)') '&INPUT'
|
||||
write(7,'(A10)') temp
|
||||
write(7,'(A1)') '/'
|
||||
rewind(7)
|
||||
read(7,NML=input)
|
||||
close(7)
|
||||
if (var.ne.'') call abort
|
||||
end
|
14
gcc/testsuite/gfortran.dg/read_eor.f90
Normal file
14
gcc/testsuite/gfortran.dg/read_eor.f90
Normal file
|
@ -0,0 +1,14 @@
|
|||
! { dg-do run }
|
||||
! PR24489 Assure that read does not go past the end of record. The width of
|
||||
! the format specifier is 8, but the internal unit record length is 4 so only
|
||||
! the first 4 characters should be read.
|
||||
! Contributed by Jerry DeLisle <jvdelisle@verizon.net>.
|
||||
program pr24489
|
||||
character*4, dimension(8) :: abuf = (/"0123","4567","89AB","CDEF", &
|
||||
"0123","4567","89AB","CDEF"/)
|
||||
character*4, dimension(2,4) :: buf
|
||||
character*8 :: a
|
||||
equivalence (buf,abuf)
|
||||
read(buf, '(a8)') a
|
||||
if (a.ne.'0123') call abort()
|
||||
end program pr24489
|
21
gcc/testsuite/gfortran.dg/read_noadvance.f90
Normal file
21
gcc/testsuite/gfortran.dg/read_noadvance.f90
Normal file
|
@ -0,0 +1,21 @@
|
|||
! { dg-do run }
|
||||
! pr24719, non-advancing read should read more than one line
|
||||
! test contributed by jerry delisle <jvdelisle@gcc.gnu.org>
|
||||
implicit none
|
||||
character(1) :: chr
|
||||
character(20) :: correct = 'foo: bar 123abc'
|
||||
integer :: i
|
||||
open(unit = 11, status = "scratch", action="readwrite")
|
||||
write(11,'(a)') "foo: bar"
|
||||
write(11,'(a)') "123abc"
|
||||
rewind(11)
|
||||
i = 0
|
||||
do
|
||||
i = i + 1
|
||||
10 read(unit = 11, fmt = '(a)', advance = 'no', end = 99, eor = 11) chr
|
||||
if (chr.ne.correct(i:i)) call abort()
|
||||
cycle
|
||||
11 continue
|
||||
end do
|
||||
99 close(11)
|
||||
end
|
10
gcc/testsuite/gfortran.dg/read_x_eor.f90
Normal file
10
gcc/testsuite/gfortran.dg/read_x_eor.f90
Normal file
|
@ -0,0 +1,10 @@
|
|||
! { dg-do run }
|
||||
! ( dg-output "^" }
|
||||
!
|
||||
! Test fix for pr24785 - EOR used to scrub the 2X.
|
||||
! Reduced from PR example submitted by Harald Anlauf <anlauf@gmx.de>
|
||||
!
|
||||
program x_with_advance_bug
|
||||
write (*,'(A,2X)', advance="no") "<"
|
||||
write (*,'(A)') ">" ! { dg-output "< >" }
|
||||
end
|
Loading…
Add table
Reference in a new issue