re PR libfortran/70684 (incorrect reading of values from file on Windows)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 19 Apr 2016 19:24:28 +0000 (19:24 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 19 Apr 2016 19:24:28 +0000 (19:24 +0000)
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.

* gfortran.dg/list_read_14.f90: New test.

From-SVN: r235220

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/list_read_14.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/list_read.c

index f97e63ec7c133d225f929ecda210e159c06beb2b..ed50f14795c5b2f0049615d183d3bf932b379f51 100644 (file)
@@ -1,3 +1,8 @@
+2016-04-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/70684
+       * gfortran.dg/list_read_14.f90: New test.
+
 2016-04-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/69201
diff --git a/gcc/testsuite/gfortran.dg/list_read_14.f90 b/gcc/testsuite/gfortran.dg/list_read_14.f90
new file mode 100644 (file)
index 0000000..15bcfad
--- /dev/null
@@ -0,0 +1,25 @@
+! { dg-do run }
+! PR70684 incorrect reading of values from file on Windows
+program test
+implicit none
+integer,parameter :: isize=12
+integer,parameter :: funit=12
+integer :: i
+character(1), parameter :: cr=char(13)
+double precision, dimension(isize) :: a, res
+res= (/ 1.0000000000000000, 2.0000000000000000, 3.0000000000000000, &
+        4.0000000000000000, 5.0000000000000000, 6.0000000000000000, &
+        7.0000000000000000, 8.0000000000000000, 9.0000000000000000, &
+        10.000000000000000, 11.000000000000000, 12.000000000000000 /)
+do i=1,isize
+ a(i)=dble(i)
+enddo
+open(funit,status="scratch")
+write(funit,'(1x,6(f25.20,'',''),a)') (a(i),i=1,6), cr
+write(funit,'(1x,6(f25.20,'',''),a)') (a(i),i=7,12), cr
+rewind(funit)
+a=0d0
+read(funit,*) (a(i),i=1,isize)
+close(funit)
+if (any(a /= res)) call abort
+end
index 688a16e8d8ba9516d1a9d4ddcd9ef4fe808f08cd..6d16d644cd5e1b53375ca43c72f3fb096c22f70b 100644 (file)
@@ -1,3 +1,9 @@
+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>
 
index e24b3922631663ad0b7ab201ccb0b4c265c4685c..b8e174c5bd7955b44da66a5f043edcdee985a1a7 100644 (file)
@@ -197,7 +197,7 @@ check_buffers (st_parameter_dt *dtp)
     }
 
 done:
-  dtp->u.p.at_eol = (c == '\n' || c == EOF);
+  dtp->u.p.at_eol = (c == '\n' || c == '\r' || c == EOF);
   return c;
 }