From eeeca2a666ad76def915c227e38ca5d1e6cdddf5 Mon Sep 17 00:00:00 2001
From: jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 18 Jan 2006 06:21:28 +0000
Subject: [PATCH] 2006-01-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25697
	* io/transfer.c (us_read): Detect end of file condition from previous
	operations and bail out (no need to pre-position).


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109870 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libgfortran/ChangeLog     |  6 ++++++
 libgfortran/io/transfer.c | 10 ++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index d5e178ed9f31..009b044f51df 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-01-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libgfortran/25697
+	* io/transfer.c (us_read): Detect end of file condition from previous
+	operations and bail out (no need to pre-position).
+
 2006-01-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libgfortran/25631
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 729883586f87..b5b8df45e9cf 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    Contributed by Andy Vaught
    Namelist transfer functions contributed by Paul Thomas
 
@@ -1219,11 +1219,17 @@ us_read (st_parameter_dt *dtp)
   int n;
   gfc_offset i;
 
+  if (dtp->u.p.current_unit->endfile == AT_ENDFILE)
+    return;
+
   n = sizeof (gfc_offset);
   p = salloc_r (dtp->u.p.current_unit->s, &n);
 
   if (n == 0)
-    return;  /* end of file */
+    {
+      dtp->u.p.current_unit->endfile = AT_ENDFILE;
+      return;  /* end of file */
+    }
 
   if (p == NULL || n != sizeof (gfc_offset))
     {
-- 
GitLab