summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-31 23:43:21 +0000
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-31 23:43:21 +0000
commit4cab09cbef13e739ccaa7cd33eeba7ee66de109f (patch)
treeac565ec762faca9922dc3c698e1b3b01925bef82
parent153536dfc5a467f1f39b337175d2ced9d367b69c (diff)
downloadppe42-gcc-4cab09cbef13e739ccaa7cd33eeba7ee66de109f.tar.gz
ppe42-gcc-4cab09cbef13e739ccaa7cd33eeba7ee66de109f.zip
* runtime/error.c (generate_error): Set both iostat and
library_return. testsuite/ * gfortran.dg/eof_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86852 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/eof_2.f9013
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/runtime/error.c13
4 files changed, 29 insertions, 6 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a71d3aa1c92..3dae964820d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/eof_2.f90 b/gcc/testsuite/gfortran.dg/eof_2.f90
new file mode 100644
index 00000000000..b7c2c9172c9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/eof_2.f90
@@ -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
+
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 50ad7a6290f..891c74ec9dd 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -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
diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c
index 74670b56d28..5eb5b0bb31e 100644
--- a/libgfortran/runtime/error.c
+++ b/libgfortran/runtime/error.c
@@ -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 */
OpenPOWER on IntegriCloud