Commit 77747e5f by Bud Davis Committed by Bud Davis

re PR libfortran/17286 (namelist containing more than one value cannot contain…

re PR libfortran/17286 (namelist containing more than one value cannot contain whitespace or newlines for READ)

2004-09-21  Bud Davis  <bdavis9659@comcast.net>

        PR fortran/17286
        * io/list_read.c (namelist_read): ignore spaces after
        the '=' for namelist reads.

2004-09-21  Bud Davis  <bdavis9659@comcast.net>

        PR fortran/17286
        * gfortran.dg/pr17286.f90: New test.

From-SVN: r87799
parent b6ad178e
2004-09-21 Bud Davis <bdavis9659@comcast.net>
PR fortran/17286
* gfortran.dg/pr17286.f90: New test.
2004-09-20 Mark Mitchell <mark@codesourcery.com> 2004-09-20 Mark Mitchell <mark@codesourcery.com>
PR c++/17530 PR c++/17530
......
! pr17286
! namelist read fails when spaces exist between the '=' and the numbers
! this is a libgfortran bug
! derived from testcase provided by Paul Thomas <paulthomas2@wanadoo.fr
program bug3
integer num1 , num2 , num3 , num4
data num3 / 42 /
data num4 / 56 /
namelist /mynml1/ num1,num2
namelist /mynml2/ num3,num4
logical dbg
data dbg / .FALSE. /
open(unit=10,status='SCRATCH')
write(10,'(A)') "&mynml1,num1=16,num2=32,&end"
!
! write mynml2
!
write(10,mynml2)
rewind(10)
!
! now read back
!
num1 = -1
num2 = -1
read(10,mynml1)
if (num1.eq.16.and.num2.eq.32) then
if (dbg) write(*,mynml1)
else
if (dbg) print *, 'expected 16 32 got ',num1,num2
call abort
endif
num3 = -1
num4 = -1
read(10,mynml2)
if (num3.eq.42.and.num4.eq.56) then
if (dbg) write(*,mynml2)
else
if (dbg) print *, 'expected 42 56 got ',num3,num4
call abort
endif
close(10)
end
2004-09-21 Bud Davis <bdavis9659@comcast.net>
PR fortran/17286
* io/list_read.c (namelist_read): ignore spaces after
the '=' for namelist reads.
2004-09-15 Aaron W. LaFramboise <aaronavay62@aaronwl.com> 2004-09-15 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
* config.h.in: Regenerate. * config.h.in: Regenerate.
......
...@@ -1496,6 +1496,10 @@ restart: ...@@ -1496,6 +1496,10 @@ restart:
len = nl->len; len = nl->len;
p = nl->mem_pos; p = nl->mem_pos;
/* skip any blanks or tabs after the = */
eat_spaces ();
switch (nl->type) switch (nl->type)
{ {
case BT_INTEGER: case BT_INTEGER:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment