Commit ceac3d59 by Thomas Koenig

re PR fortran/34594 (On error and END, no jump to ERR=<label>)

2007-12-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/34594
	* runtime/error.c: If there was a previous error, don't
	mask it with another error mesage, EOF or EOR condition.

2007-12-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/34594
	* gfortran.dg/direct_io_8.f90:  New test case.

From-SVN: r131199
parent edbf8b16
2007-12-27 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/34594
* gfortran.dg/direct_io_8.f90: New test case.
2007-12-27 Jakub Jelinek <jakub@redhat.com>
PR target/34281
! { dg-do run }
! PR 34594 - this used to give runtime errors due to an
! end condition.
program main
implicit none
integer :: iou, i, ir, TEMP_CHANGES
i=44
ir = -42
open(11,file="foo.dat")
! Try a direct access read on a formatted sequential rile
READ (11, REC = I, ERR = 99) TEMP_CHANGES
call abort
99 continue
! Variant 2: ir is ok, but does not jump to 99
READ (11, REC = I, IOSTAT = IR, ERR = 98) TEMP_CHANGES
call abort
98 continue
if(ir == 0) then
call abort
end if
close(11,status="delete")
end program main
2007-12-27 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/34594
* runtime/error.c: If there was a previous error, don't
mask it with another error mesage, EOF or EOR condition.
2007-12-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/34560
......
......@@ -410,6 +410,13 @@ translate_error (int code)
void
generate_error (st_parameter_common *cmp, int family, const char *message)
{
/* If there was a previous error, don't mask it with another
error message, EOF or EOR condition. */
if ((cmp->flags & IOPARM_LIBRETURN_MASK) == IOPARM_LIBRETURN_ERROR)
return;
/* Set the error status. */
if ((cmp->flags & IOPARM_HAS_IOSTAT))
*cmp->iostat = (family == LIBERROR_OS) ? errno : family;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment