error.c (generate_error): Set both iostat and library_return.

* runtime/error.c (generate_error): Set both iostat and
	library_return.
testsuite/
	* gfortran.dg/eof_2.f90: New test.

From-SVN: r86852
This commit is contained in:
Paul Brook 2004-08-31 23:43:21 +00:00 committed by Paul Brook
parent a0ca8e0c48
commit 244fada7d0
4 changed files with 29 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2004-09-01 Paul Brook <paul@codesourcery.com>
* gfortran.dg/eof_2.f90: New test.
2004-08-31 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/16579

View File

@ -0,0 +1,13 @@
! { dg-do run }
! Check that end= and iostat= specifiers are honoured when both are used
program eof_2
integer ierr, i
open (11, status="SCRATCH")
ierr = 0
read (11, *, end=10, iostat=ierr) i
call abort
10 continue
if (ierr .ge. 0) call abort
end program

View File

@ -1,3 +1,8 @@
2004-09-01 Paul Brook <paul@codesourcery.com>
* runtime/error.c (generate_error): Set both iostat and
library_return.
2004-08-31 Paul Brook <paul@codesourcery.com>
PR libfortran/16805

View File

@ -445,13 +445,11 @@ translate_error (int code)
void
generate_error (int family, const char *message)
{
/* Set the error status. */
if (ioparm.iostat != NULL)
{
*ioparm.iostat = family;
return;
}
*ioparm.iostat = family;
/* Report status back to the compiler. */
switch (family)
{
case ERROR_EOR:
@ -468,10 +466,13 @@ generate_error (int family, const char *message)
default:
ioparm.library_return = LIBRARY_ERROR;
if (ioparm.err != 0)
return;
break;
}
if (ioparm.err != 0)
/* Return if the user supplied an iostat variable. */
if (ioparm.iostat != NULL)
return;
/* Terminate the program */