aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2016-05-24 06:11:21 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2016-05-24 06:11:21 +0000
commitf37e63a16820d8d55ae837cf7dd3aa6a3e81da81 (patch)
treee03b0fad5c3cb032e3479dd8b183c841dd06d8ed
parente1afd03991c2d807c59d966849699a106e2e1f7c (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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_90.f28
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c2
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;