diff options
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr17286.f90 | 45 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/list_read.c | 4 |
4 files changed, 60 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d2e5b63643..e64aafb22f5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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> PR c++/17530 diff --git a/gcc/testsuite/gfortran.dg/pr17286.f90 b/gcc/testsuite/gfortran.dg/pr17286.f90 new file mode 100644 index 00000000000..ccd100f93b0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr17286.f90 @@ -0,0 +1,45 @@ +! 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 diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a75b1e4b6bf..2908775a827 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +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> * config.h.in: Regenerate. diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index 51767d07672..80078a87999 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -1496,6 +1496,10 @@ restart: len = nl->len; p = nl->mem_pos; + + /* skip any blanks or tabs after the = */ + eat_spaces (); + switch (nl->type) { case BT_INTEGER: |