diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2020-05-14 18:30:27 +0200 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2020-05-14 18:33:24 +0200 |
commit | cdc34b505796327b3eee9e97bc5f27ba71fd9e7a (patch) | |
tree | 479abea4f28b9b3d1593a4b360e307dde3210f8f /libgomp | |
parent | 8d286dd118a5bd16f7ae0fb9dfcdcfd020bea803 (diff) |
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.
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 13 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/close_errors_1.f90 | 19 |
2 files changed, 32 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 8a66266d7c6..3339ffb3b22 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,16 @@ +2020-05-14 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR libfortran/95119 + * testsuite/libgomp.fortran/close_errors_1.f90: New test. + +2020-05-14 H.J. Lu <hongjiu.lu@intel.com> + + * configure: Regenerated. + +2020-05-14 Jakub Jelinek <jakub@redhat.com> + + * testsuite/libgomp.c-c++-common/target-40.c: New test. + 2020-05-14 H.J. Lu <hongjiu.lu@intel.com> * configure: Regenerated. diff --git a/libgomp/testsuite/libgomp.fortran/close_errors_1.f90 b/libgomp/testsuite/libgomp.fortran/close_errors_1.f90 new file mode 100644 index 00000000000..6edb7da4116 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/close_errors_1.f90 @@ -0,0 +1,19 @@ +! { 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 |