summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr17286.f9045
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c4
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: