aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2017-12-20 20:36:22 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2017-12-20 20:36:22 +0000
commit7dd342222b25a4880d083d8fd013a901fb6f1993 (patch)
tree2cef2e5e09c3938fd255864b725da8da835db8dc /gcc
parent442db27632e461ace26b61e968dfd8e7ab085e38 (diff)
downloadgcc-7dd342222b25a4880d083d8fd013a901fb6f1993.zip
gcc-7dd342222b25a4880d083d8fd013a901fb6f1993.tar.gz
gcc-7dd342222b25a4880d083d8fd013a901fb6f1993.tar.bz2
re PR fortran/83436 (Internal file cannot be accessed by UNFORMATTED data transfer when reading from /dev/urandom)
2017-12-20 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83436 * gfortran.dg/internal_readwrite_4.f90: New test. From-SVN: r255902
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/internal_readwrite_4.f9030
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f063f26..9f564ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-20 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/83436
+ * gfortran.dg/internal_readwrite_4.f90: New test.
+
2017-12-20 Jakub Jelinek <jakub@redhat.com>
PR ipa/83506
diff --git a/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90 b/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
new file mode 100644
index 0000000..cd2e684
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
@@ -0,0 +1,30 @@
+! { dg-do run }
+! PR 83436 - this used to cause an error.
+! Original test case by Daan van Vugt.
+module mod_random_seed
+ implicit none
+contains
+ !> Read an int from /dev/urandom
+ subroutine read_urandom_int(seed, ierr)
+ implicit none
+ integer, intent(out) :: seed
+ integer, intent(out) :: ierr
+ integer :: un
+ character(len=80) :: restart_file
+ write(restart_file,'(A,A)') 'jorek', '_restart.h5'
+
+ open(newunit=un, file="/dev/urandom", access="stream", &
+ form="unformatted", action="read", status="old", iostat=ierr)
+ if (ierr == 0) then
+ read(un) seed
+ close(un)
+ end if
+ end subroutine read_urandom_int
+end module mod_random_seed
+
+program test_random_seed
+ use mod_random_seed
+ implicit none
+ integer :: seed, ierr
+ call read_urandom_int(seed, ierr)
+end program test_random_seed