diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2016-05-24 06:11:21 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2016-05-24 06:11:21 +0000 |
commit | f37e63a16820d8d55ae837cf7dd3aa6a3e81da81 (patch) | |
tree | e03b0fad5c3cb032e3479dd8b183c841dd06d8ed | |
parent | e1afd03991c2d807c59d966849699a106e2e1f7c (diff) |
2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/70684
* io/list_read (eat_spaces): Eat '\r' as part of spaces.
* gfortran.dg/namelist_90.f: New test
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236628 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/namelist_90.f | 28 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/list_read.c | 2 |
4 files changed, 39 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 49789988c96..32e95227be2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> + PR fortran/71123 + * gfortran.dg/namelist_90.f: New test + +2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> + PR fortran/66461 * gfortran.dg/unexpected_eof.f: New test diff --git a/gcc/testsuite/gfortran.dg/namelist_90.f b/gcc/testsuite/gfortran.dg/namelist_90.f new file mode 100644 index 00000000000..9c0ae5b72bb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/namelist_90.f @@ -0,0 +1,28 @@ +! { dg-do run } +! PR71123 Namelist read failure on Windows + implicit none + integer :: i, ierr + real(8), dimension(30) :: senid, res + character(2) :: crlf = char(13) // char(10) + namelist /fith/ senid + do i=1,30 + res(i) = i + enddo + senid = 99.0 + open(unit=7,file='test.out',form='formatted', + * status='new',action='readwrite', access='stream') + write(7,'(a)') "&fith" // crlf + write(7,'(a)') "senid= 1.0 , 2.0 , 3.0 , 4.0 , 5.0 ," // crlf + write(7,'(a)') "6.0 , 7.0 , 8.0 , 9.0 , 10.0 , 11.0 ," // crlf + write(7,'(a)') "12.0 , 13.0 , 14.0 , 15.0 , 16.0 , 17.0 ," // crlf + write(7,'(a)') "18.0 , 19.0 , 20.0 , 21.0 , 22.0 , 23.0 ," // crlf + write(7,'(a)') "24.0 , 25.0 , 26.0 , 27.0 , 28.0 , 29.0 ," // crlf + write(7,'(a)') "30.0 ," // crlf + write(7,'(a)') "/" // crlf + close(7) + open(unit=7,file='test.out',form='formatted') + read(7,nml=fith, iostat=ierr) + close(7, status="delete") + if (ierr.ne.0) call abort + if (any(senid.ne.res)) call abort + end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 6d16d644cd5..549a5aa2a2e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,8 +1,12 @@ +2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libgfortran/70684 + * io/list_read (eat_spaces): Eat '\r' as part of spaces. + 2016-04-19 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/70684 * io/list_read (check_buffers): Add '\r' to check for end of line. - factor. 2016-03-30 Jerry DeLisle <jvdelisle@gcc.gnu.org> Dominique d'Humieres <dominiq@lps.ens.fr> diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index b8e174c5bd7..244430d9765 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -418,7 +418,7 @@ eat_spaces (st_parameter_dt *dtp) /* Now skip spaces, EOF and EOL are handled in next_char. */ do c = next_char (dtp); - while (c != EOF && (c == ' ' || c == '\t')); + while (c != EOF && (c == ' ' || c == '\r' || c == '\t')); unget_char (dtp, c); return c; |