re PR libfortran/17286 (namelist containing more than one value cannot contain whites...
authorBud Davis <bdavis9659@comcast.net>
Tue, 21 Sep 2004 11:22:47 +0000 (11:22 +0000)
committerBud Davis <bdavis@gcc.gnu.org>
Tue, 21 Sep 2004 11:22:47 +0000 (11:22 +0000)
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

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr17286.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/list_read.c

index 2d2e5b63643af45768e933690d8eacfbc32200a9..e64aafb22f554f0dccfdaf40b001ffdaa5f3e0e5 100644 (file)
@@ -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 (file)
index 0000000..ccd100f
--- /dev/null
@@ -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
index a75b1e4b6bff12924202b62b7919a07fe7641028..2908775a827ca4b96252eda1527c7bc2f87e9cd8 100644 (file)
@@ -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.
index 51767d076721baee12132f929756a9d15efd59b1..80078a879994ddf922e011ae9a5e672eb230be09 100644 (file)
@@ -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: