Commit 8275e0a6 by Thomas Koenig

Add early return for invalid STATUS for close.

2020-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95119
	* io/close.c (close_status): Add CLOSE_INVALID.
	(st_close): Return early on invalid STATUS parameter.

2020-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95119
	* testsuite/libgomp.fortran/close_errors_1.f90: New test.

(cherry picked from commit cdc34b505796327b3eee9e97bc5f27ba71fd9e7a)
(cherry picked from commit d975519ad1066ed0397714c91aafadadb52a63dd)
parent a24d9b5b
2020-05-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/95119
* io/close.c (close_status): Add CLOSE_INVALID.
(st_close): Return early on invalid STATUS parameter.
2020-05-07 Release Manager
* GCC 10.1.0 released.
......
......@@ -31,7 +31,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#endif
typedef enum
{ CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
{ CLOSE_INVALID = - 1, CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
close_status;
static const st_option status_opt[] = {
......@@ -61,6 +61,12 @@ st_close (st_parameter_close *clp)
find_option (&clp->common, clp->status, clp->status_len,
status_opt, "Bad STATUS parameter in CLOSE statement");
if (status == CLOSE_INVALID)
{
library_end ();
return;
}
u = find_unit (clp->common.unit);
if (ASYNC_IO && u && u->au)
......
2020-05-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/95119
* testsuite/libgomp.fortran/close_errors_1.f90: New test.
2020-05-07 Release Manager
* GCC 10.1.0 released.
......
! { dg-do run }
! PR 95115 - this used to hang with -pthread. Original test case by
! Bill Long.
program test
character(len=16) my_status
character(len=1000) :: iomsg
open (unit=10, file='test.dat')
print *,42
write (10, *) 'weird'
rewind (10)
read (10, *) my_status
close (10)
open (unit=10, file='test.dat')
close (unit=10, status=my_status, iostat=ios, iomsg=iomsg)
if (ios == 0) stop 1
if (iomsg /= "Bad STATUS parameter in CLOSE statement") stop 2
close (10, status='delete')
end program test
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