2005-08-29 Thomas Koenig <Thomas.Koenig@online.de>
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Aug 2005 20:40:02 +0000 (20:40 +0000)
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Aug 2005 20:40:02 +0000 (20:40 +0000)
PR libfortran/23598
* io/lock.c(library_start):  If ioparm.iostat is present, clear
it unconditionally.

2005-02-29  Thomas Koenig  <Thomas.Koenig@online.de>

PR libfortran/23598
* gfortran.dg/iostat_1.f90:  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103613 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/iostat_1.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/lock.c

index 5244e71..fa4675b 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-29  Thomas Koenig  <Thomas.Koenig@online.de>
+
+       PR libfortran/23598
+       * gfortran.dg/iostat_1.f90:  New test.
+
 2005-08-28  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR middle-end/23408
diff --git a/gcc/testsuite/gfortran.dg/iostat_1.f90 b/gcc/testsuite/gfortran.dg/iostat_1.f90
new file mode 100644 (file)
index 0000000..79bc001
--- /dev/null
@@ -0,0 +1,14 @@
+! { dg-do run }
+! PR 23598 - The iostat variable wasn't reset if the previous
+! I/O library call had an error.
+program main
+  implicit none
+  integer :: ios, i
+  open (10, pad='no', status='scratch')
+  write (10, '(A)') '1','1'
+  rewind (10)
+  read (10,'(I2)',iostat=ios) i
+  ios = -4321
+  read (10, '(I1)', iostat=ios) i
+  if (ios /= 0) call abort
+end program main
index e76f9e5..98ae306 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-29  Thomas Koenig  <Thomas.Koenig@online.de>
+
+       PR libfortran/23598
+       * io/lock.c(library_start):  If ioparm.iostat is present, clear
+       it unconditionally.
+
 2005-08-27  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
 
        * acinclude.m4 (LIBGFOR_CHECK_UNLINK_OPEN_FILE): Add check to see
index 9541fc5..7dc08e1 100644 (file)
@@ -54,7 +54,7 @@ library_start (void)
      stay within the library. */
   g.in_library = 1;
 
-  if (ioparm.iostat != NULL && ioparm.library_return == LIBRARY_OK)
+  if (ioparm.iostat != NULL)
     *ioparm.iostat = ERROR_OK;
 
   ioparm.library_return = LIBRARY_OK;