aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2014-09-17 00:40:28 +0300
committerJanne Blomqvist <jb@gcc.gnu.org>2014-09-17 00:40:28 +0300
commit0e05c303e5c3c7882d5e36a4d5b66f0563ae6478 (patch)
tree34b3e91356fc23c2feb76d92e78fad28bd83a126 /gcc
parent7425e424b5222704558591fc6cf26eaa57fb81de (diff)
downloadgcc-0e05c303e5c3c7882d5e36a4d5b66f0563ae6478.zip
gcc-0e05c303e5c3c7882d5e36a4d5b66f0563ae6478.tar.gz
gcc-0e05c303e5c3c7882d5e36a4d5b66f0563ae6478.tar.bz2
PR libfortran/62768 Handle filenames with embedded null characters.
testsuite ChangeLog: 2014-09-17 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/62768 * gfortran.dg/filename_null.f90: New test. libgfortran ChangeLog: 2014-09-17 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/62768 * io/io.h (gfc_unit): Store C string for the filename. * io/close.c (st_close): Use gfc_unit.filename. * io/inquire.c (inquire_via_unit): Likewise. * io/open.c (new_unit): Likewise. (already_open): Likewise, unlink file before freeing filename. * io/unit.c (init_units): Likewise. (close_unit_1): Likewise. (filename_from_unit): Likewise. * io/unix.c (compare_file_filename): Likewise. (find_file0): Likewise. (delete_file): Likewise. From-SVN: r215307
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/filename_null.f9017
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 93e40b6..507022c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-17 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR libfortran/62768
+ * gfortran.dg/filename_null.f90: New test.
+
2014-09-16 H.J. Lu <hongjiu.lu@intel.com>
* gcc.dg/pg-override.c: Fix a typo.
diff --git a/gcc/testsuite/gfortran.dg/filename_null.f90 b/gcc/testsuite/gfortran.dg/filename_null.f90
new file mode 100644
index 0000000..f24d243
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/filename_null.f90
@@ -0,0 +1,17 @@
+! { dg-do run }
+! PR 62768
+! Filenames with embedded NULL characters are truncated, make sure
+! inquire reports the correct truncated name.
+program filename_null
+ implicit none
+ character(len=15), parameter :: s = "hello" // achar(0) // "world", &
+ s2 = "hello"
+ character(len=15) :: r
+ logical :: l
+ open(10, file=s)
+ inquire(unit=10, name=r)
+ if (r /= s2) call abort()
+ inquire(file=s2, exist=l)
+ if (.not. l) call abort()
+ close(10, status="delete")
+end program filename_null