From 20fc7d0c339236090ffa64f8d9b84e144cca1b55 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Thu, 18 Feb 2016 18:23:09 +0000 Subject: [PATCH] backport: re PR fortran/69668 (Error reading namelist opened with DELIM='NONE') 2016-02-18 Jerry DeLisle Backport from gcc-5-branch. PR libgfortran/69668 * io/list_read.c (read_character): Remove code related to DELIM_NONE. * gfortran.dg/namelist_38.f90: Update test. * gfortran.dg/namelist_84.f90: Update test. From-SVN: r233528 --- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gfortran.dg/namelist_38.f90 | 14 +++++++++----- gcc/testsuite/gfortran.dg/namelist_84.f90 | 5 ++--- libgfortran/ChangeLog | 6 ++++++ libgfortran/io/list_read.c | 15 --------------- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d9f8f118deb..b0b902fe1838 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-02-18 Jerry DeLisle + + Backport from gcc-5-branch. + PR libgfortran/69668 + * gfortran.dg/namelist_38.f90: Update test. + * gfortran.dg/namelist_84.f90: Update test. + 2016-02-18 Marek Polacek 2016-02-12 Marek Polacek diff --git a/gcc/testsuite/gfortran.dg/namelist_38.f90 b/gcc/testsuite/gfortran.dg/namelist_38.f90 index 5578654eea48..b51463cfa8a3 100644 --- a/gcc/testsuite/gfortran.dg/namelist_38.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_38.f90 @@ -5,6 +5,7 @@ program main implicit none character(len=3) :: a + character(25) :: b namelist /foo/ a open(10, status="scratch", delim="quote") @@ -28,9 +29,12 @@ program main open(10, status="scratch", delim="none") a = "a'a" write(10,foo) - rewind 10 - a = "" - read (10,foo) - if (a.ne."a'a") call abort - close (10) + rewind (10) + read(10,"(a)") b + if (b .ne. "&FOO") call abort + read(10,"(a)") b + if (b .ne. " A=a'a") call abort + read(10,"(a)") b + if (b .ne. " /") call abort + close(10) end program main diff --git a/gcc/testsuite/gfortran.dg/namelist_84.f90 b/gcc/testsuite/gfortran.dg/namelist_84.f90 index af139d91edc9..14b68a44e8a3 100644 --- a/gcc/testsuite/gfortran.dg/namelist_84.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_84.f90 @@ -17,12 +17,11 @@ program namelist_delim_none write(10, mylist) rewind(10) mystring = "xxxxx" - read(10,mylist) - if (any(mystring /= (/ 'mon', 'tue', 'wed', 'thu', 'fri' /))) call abort rewind(10) do i=1,5 read(10,'(a)') internal_unit - if (scan(internal_unit,"""'").ne.0) call abort + if (i.eq.2 .and. internal_unit .ne. " MYSTRING=mon tue wed thu fri ,") call abort + if (scan(internal_unit,"""'").ne.0) print *, internal_unit end do close(10) end program diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 5cdd8192e15b..30126793489c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2016-02-18 Jerry DeLisle + + Backport from gcc-5-branch. + PR libgfortran/69668 + * io/list_read.c (read_character): Remove code related to DELIM_NONE. + 2015-08-28 James Greenhalgh Backport from gcc-5-branch. diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index b95721069ccb..d3fac4c52a5c 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -1006,21 +1006,6 @@ read_character (st_parameter_dt *dtp, int length __attribute__ ((unused))) default: if (dtp->u.p.namelist_mode) { - if (dtp->u.p.current_unit->delim_status == DELIM_NONE) - { - /* No delimiters so finish reading the string now. */ - int i; - push_char (dtp, c); - for (i = dtp->u.p.ionml->string_length; i > 1; i--) - { - if ((c = next_char (dtp)) == EOF) - goto done_eof; - push_char (dtp, c); - } - dtp->u.p.saved_type = BT_CHARACTER; - free_line (dtp); - return; - } unget_char (dtp, c); return; } -- 2.47.2