re PR fortran/69668 (Error reading namelist opened with DELIM='NONE')

2016-02-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/69668
	* io/list_read.c (read_character): Remove code related to DELIM_NONE.

	PR libgfortran/69668
	* gfortran.dg/namelist_38.f90: Update test.
	* gfortran.dg/namelist_84.f90: Update test.

From-SVN: r233387
This commit is contained in:
Jerry DeLisle 2016-02-12 19:52:13 +00:00
parent 876217ae71
commit 955ca6dc77
5 changed files with 22 additions and 23 deletions

View file

@ -1,3 +1,9 @@
2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69668
* gfortran.dg/namelist_38.f90: Update test.
* gfortran.dg/namelist_84.f90: Update test.
2016-02-12 David Malcolm <dmalcolm@redhat.com>
PR other/69554

View file

@ -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

View file

@ -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

View file

@ -1,3 +1,8 @@
2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69668
* io/list_read.c (read_character): Remove code related to DELIM_NONE.
2016-01-23 John David Anglin <danglin@gcc.gnu.org>
PR libfortran/68744

View file

@ -1131,21 +1131,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;
}