list_read.c (eat_separator): Set at_eo when a '/' is seen.
authorPaul Brook <paul@codesourcery.com>
Tue, 31 Aug 2004 14:56:09 +0000 (14:56 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Tue, 31 Aug 2004 14:56:09 +0000 (14:56 +0000)
* list_read.c (eat_separator): Set at_eo when a '/' is seen.
testsuite/
* gfortran.dg/list_read_1.f90: New file.

From-SVN: r86830

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

index 8e6d1be2a8ed79be593d0eaa5cdebfd470297f81..0bca0f1722900a48b8cb798756786ae45dba4cc4 100644 (file)
@@ -1,3 +1,7 @@
+2004-08-31  Paul Brook  <paul@codesourcery.com>
+
+       * gfortran.dg/list_read_1.f90: New file.
+
 2004-08-30  Mark Mitchell  <mark@codesourcery.com>
 
        * g++.dg/opt/loop1.C: XFAIL.
diff --git a/gcc/testsuite/gfortran.dg/list_read_1.f90 b/gcc/testsuite/gfortran.dg/list_read_1.f90
new file mode 100644 (file)
index 0000000..6fba90a
--- /dev/null
@@ -0,0 +1,22 @@
+! { dg-do run }
+! Program to test terminators in list-directed input
+program list_read_1
+  character(len=5) :: s
+
+  open (unit=11, status="SCRATCH")
+  ! The / terminator was causing the next value to be skipped.
+  write (11, '(a)') " 42 /"
+  write (11, '(a)') " 43"
+  write (11, '(a)') " 44"
+
+  rewind(11)
+
+  read (11, *) i
+  if (i .ne. 42) call abort
+  read (11, *) i
+  if (i .ne. 43) call abort
+  read (11, *) i
+  if (i .ne. 44) call abort
+  close (11)
+end
+
index ecc104e5ffc9ca81f3c70f72d5ab9962426c58be..28329d2608cf0480d4e55897874a910584f33b24 100644 (file)
@@ -1,3 +1,7 @@
+2004-08-31  Paul Brook  <paul@codesourcery.com>
+
+       * list_read.c (eat_separator): Set at_eo when a '/' is seen.
+
 2004-08-31  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        * libgfortran.h: Replace 'gfc_strlen_type' by
index 95b5b8834915e2d923ff7eb90b7eb54805fe00b7..8b00a5e296ea8438de3b57836d8f6efb2a60f911 100644 (file)
@@ -210,6 +210,7 @@ eat_separator (void)
     case '/':
       input_complete = 1;
       next_record (0);
+      at_eol = 1;
       break;
 
     case '\n':