re PR libfortran/17597 (list directed read has error)
2004-12-15 Bud Davis <bdavis9659@comcast.net> Steven G. Kargl <kargls@comcast.net> PR fortran/17597 * io/list_read.c (read_real): do not push back a comma when it delimits a real value without a decimal point 2004-12-15 Bud Davis <bdavis9659@comcast.net> Steven G. Kargle <kargls@comcast.net> PR fortran/17597 * gfortran.dg/list_read_3.f90: New test. Co-Authored-By: Steven G. Kargl <kargls@comcast.net> Co-Authored-By: Steven G. Kargl <kargls@comcast.net> From-SVN: r92190
This commit is contained in:
parent
0aec601466
commit
c8c83c1828
4 changed files with 115 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2004-12-15 Bud Davis <bdavis9659@comcast.net>
|
||||
Steven G. Kargle <kargls@comcast.net>
|
||||
|
||||
PR fortran/17597
|
||||
* gfortran.dg/list_read_3.f90: New test.
|
||||
|
||||
2004-12-15 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gcc.dg/ftrapv-2.c: New test.
|
||||
|
|
101
gcc/testsuite/gfortran.dg/list_read_3.f90
Normal file
101
gcc/testsuite/gfortran.dg/list_read_3.f90
Normal file
|
@ -0,0 +1,101 @@
|
|||
! { dg-do run }
|
||||
! Program to test reading in a list of integer values into REAL variables.
|
||||
! The comma separator was not handled correctly.
|
||||
!
|
||||
program fg
|
||||
|
||||
character(len=80) buff
|
||||
logical debug
|
||||
|
||||
debug = .FALSE.
|
||||
a = 0
|
||||
b = 0
|
||||
c = 0
|
||||
d = 0
|
||||
write (buff,'(a)') '10,20,30,40'
|
||||
read(buff,*) a, b, c, d
|
||||
|
||||
if (debug) then
|
||||
print*,buff
|
||||
print*,a, b, c, d
|
||||
end if
|
||||
|
||||
if (abs(10. - a) > 1e-5) call abort
|
||||
if (abs(20. - b) > 1e-5) call abort
|
||||
if (abs(30. - c) > 1e-5) call abort
|
||||
if (abs(40. - d) > 1e-5) call abort
|
||||
|
||||
a = 0
|
||||
b = 0
|
||||
c = 0
|
||||
d = 0
|
||||
write (buff,'(a)') '10.,20.,30.,40.'
|
||||
read(buff,*) a, b, c, d
|
||||
|
||||
if (abs(10. - a) > 1e-5) call abort
|
||||
if (abs(20. - b) > 1e-5) call abort
|
||||
if (abs(30. - c) > 1e-5) call abort
|
||||
if (abs(40. - d) > 1e-5) call abort
|
||||
|
||||
if (debug) then
|
||||
print*,buff
|
||||
print*,a, b, c, d
|
||||
end if
|
||||
|
||||
a = 0
|
||||
b = 0
|
||||
c = 0
|
||||
d = 0
|
||||
write (buff,'(a)') '10.0,20.0,30.0,40.0'
|
||||
read(buff,*) a, b, c, d
|
||||
|
||||
if (abs(10. - a) > 1e-5) call abort
|
||||
if (abs(20. - b) > 1e-5) call abort
|
||||
if (abs(30. - c) > 1e-5) call abort
|
||||
if (abs(40. - d) > 1e-5) call abort
|
||||
|
||||
if (debug) then
|
||||
print*,buff
|
||||
print*,a, b, c, d
|
||||
end if
|
||||
|
||||
|
||||
a = 0
|
||||
b = -99
|
||||
c = 0
|
||||
d = 0
|
||||
write (buff,'(a)') '10.0,,30.0,40.0'
|
||||
read(buff,*) a, b, c, d
|
||||
|
||||
if (abs(10. - a) > 1e-5) call abort
|
||||
if (abs(-99. - b) > 1e-5) call abort
|
||||
if (abs(30. - c) > 1e-5) call abort
|
||||
if (abs(40. - d) > 1e-5) call abort
|
||||
|
||||
if (debug) then
|
||||
print*,buff
|
||||
print*,a, b, c, d
|
||||
end if
|
||||
|
||||
|
||||
call abc
|
||||
|
||||
end program
|
||||
|
||||
subroutine abc
|
||||
|
||||
character(len=80) buff
|
||||
|
||||
a = 0
|
||||
b = 0
|
||||
c = 0
|
||||
d = 0
|
||||
write (buff,'(a)') '10,-20,30,-40'
|
||||
read(buff,*) a, b, c, d
|
||||
|
||||
if (abs(10. - a) > 1e-5) call abort
|
||||
if (abs(-20. - b) > 1e-5) call abort
|
||||
if (abs(30. - c) > 1e-5) call abort
|
||||
if (abs(-40. - d) > 1e-5) call abort
|
||||
|
||||
end subroutine abc
|
|
@ -1,3 +1,10 @@
|
|||
2004-12-15 Bud Davis <bdavis9659@comcast.net>
|
||||
Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
PR fortran/17597
|
||||
* io/list_read.c (read_real): do not push back a comma when
|
||||
it delimits a real value without a decimal point
|
||||
|
||||
2004-12-14 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* libgfortran/io/transfer.c (us_read): Use memcpy/memset
|
||||
|
|
|
@ -1043,7 +1043,7 @@ read_real (int length)
|
|||
goto got_repeat;
|
||||
|
||||
CASE_SEPARATORS:
|
||||
if (c != '\n')
|
||||
if (c != '\n' && c != ',')
|
||||
unget_char (c); /* Real number that is just a digit-string. */
|
||||
goto done;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue