aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_2.f9012
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/transfer.c3
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba894d9..b7a5f61 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-16 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/18778
+ * gfortran.dg/endfile_2.f90: New test.
+
2005-01-16 Steven G. Kargl <kargls@comcast.net>
PR 19168
diff --git a/gcc/testsuite/gfortran.dg/endfile_2.f90 b/gcc/testsuite/gfortran.dg/endfile_2.f90
new file mode 100644
index 0000000..7f366f1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/endfile_2.f90
@@ -0,0 +1,12 @@
+! { dg-do run }
+! pr18778 abort on endfile without opening unit
+ program test
+ implicit none
+ integer i
+ endfile(8)
+ rewind(8)
+ read(8,end=0023)i
+ call abort ! should never get here
+ stop
+ 0023 continue
+ end
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index c0534b8..d6bcb8d 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2004-01-16 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/18778
+ * io/transfer.c (us_read): no bytes available is not a
+ runtime error.
+
2005-01-15 Bud Davis <bdavis9659@comcast.net>
PR fortran/18983
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 5454407..73ae853 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -843,6 +843,9 @@ us_read (void)
n = sizeof (gfc_offset);
p = salloc_r (current_unit->s, &n);
+ if (n == 0)
+ return; /* end of file */
+
if (p == NULL || n != sizeof (gfc_offset))
{
generate_error (ERROR_BAD_US, NULL);