re PR fortran/57633 (I/O: Problem with formatted read: reading CR-LF files (\r\n))

2013-06-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57633
        * io/list_read.c (next_char, eat_separator): Don't set EOL for \r.

2013-06-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57633
        * gfortran.dg/list_read_11.f90: New.

From-SVN: r200238
This commit is contained in:
Tobias Burnus 2013-06-20 12:55:03 +02:00
parent c3a9b91b4a
commit 937424c182
4 changed files with 56 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2013-06-20 Tobias Burnus <burnus@net-b.de>
PR fortran/57633
* gfortran.dg/list_read_11.f90: New.
2013-06-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/57584
@ -23,13 +28,13 @@
2013-06-19 Balaji V. Iyer <balaji.v.iyer@intel.com>
* c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Replaced all the
hard-coded values of array sizes with a #define.
* c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise.
* c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise.
* c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise.
* c-c++-common/cilk-plus/AN/pr57577.c: Likewise.
* c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise.
* c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Replaced all the
hard-coded values of array sizes with a #define.
* c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise.
* c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise.
* c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise.
* c-c++-common/cilk-plus/AN/pr57577.c: Likewise.
* c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise.
2013-06-19 Yufeng Zhang <yufeng.zhang@arm.com>

View File

@ -0,0 +1,38 @@
! { dg-do run }
! { dg-options "-fbackslash" }
!
! PR fortran/57633
!
program teststuff
implicit none
integer::a
character(len=10)::s1,s2
open(11,file="testcase.txt",form='unformatted',access='stream',status='new')
write(11) 'line1,1,\r\nline2'
close(11)
open(11,file="testcase.txt",form='formatted')
s1 = repeat('x', len(s1))
a = 99
read(11,*)s1,a
if (s1 /= "line1" .or. a /= 1) call abort()
s1 = repeat('x', len(s1))
read(11,"(a)")s1
close(11,status="delete")
if (s1 /= "line2") call abort()
open(11,file="testcase.txt",form='unformatted',access='stream',status='new')
write(11) 'word1\rword2,\n'
close(11)
open(11,file="testcase.txt",form='formatted')
s1 = repeat('x', len(s1))
s2 = repeat('x', len(s1))
read(11,*)s1,s2
close(11,status="delete")
if (s1 /= "word1") call abort()
if (s2 /= "word2") call abort()
end program teststuff

View File

@ -1,3 +1,8 @@
2013-06-20 Tobias Burnus <burnus@net-b.de>
PR fortran/57633
* io/list_read.c (next_char, eat_separator): Don't set EOL for \r.
2012-06-19 Uros Bizjak <ubizjak@gmail.com>
* config/fpu-387.h: Use __asm__ and __volatile__ consistently.

View File

@ -242,7 +242,7 @@ next_char (st_parameter_dt *dtp)
dtp->u.p.current_unit->strm_pos++;
}
done:
dtp->u.p.at_eol = (c == '\n' || c == '\r' || c == EOF);
dtp->u.p.at_eol = (c == '\n' || c == EOF);
return c;
}
@ -334,7 +334,6 @@ eat_separator (st_parameter_dt *dtp)
break;
case '\r':
dtp->u.p.at_eol = 1;
if ((n = next_char(dtp)) == EOF)
return LIBERROR_END;
if (n != '\n')