From ff9bb54ea5a2dc2fd9b7b82bf5a2d007acc1142c Mon Sep 17 00:00:00 2001
From: bdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun, 16 Jan 2005 20:44:01 +0000
Subject: [PATCH] 2005-01-16  Bud Davis  <bdavis9659@comcast.net>

        PR fortran/18778
        * gfortran.dg/endfile_2.f90: New test.

        * io/transfer.c (us_read): no bytes available is not a
        runtime error.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93737 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/testsuite/ChangeLog                 |  5 +++++
 gcc/testsuite/gfortran.dg/endfile_2.f90 | 12 ++++++++++++
 libgfortran/ChangeLog                   |  6 ++++++
 libgfortran/io/transfer.c               |  3 +++
 4 files changed, 26 insertions(+)
 create mode 100644 gcc/testsuite/gfortran.dg/endfile_2.f90

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba894d92ecf5..b7a5f61d38ec 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 000000000000..7f366f1e0336
--- /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 c0534b8ef442..d6bcb8d9cbb0 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 545440790731..73ae853fc87d 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);
-- 
GitLab