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