diff options
author | tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-21 19:34:49 +0000 |
---|---|---|
committer | tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-21 19:34:49 +0000 |
commit | 86af97bd8e79bf58aa28881c26e1ed31fbf86cd7 (patch) | |
tree | a497b79fd25f505a51f14cd7f475f9a76e186e43 | |
parent | 94dd03a68979bfecb9cbe028d4feb8e401c6edf2 (diff) |
2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/55919
* scanner.c (add_path_to_list): Copy path to temporary and strip
trailing directory separators before calling stat().
2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/55919
* gfortran.dg/include_8.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195348 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/scanner.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/include_8.f90 | 6 |
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 730c41b4e1f..126536b31c6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/55919 + * gfortran.dg/include_8.f90: New test. + 2013-01-17 Richard Biener <rguenther@suse.de> * trans-stmt.c (gfc_trans_do): Conditionally compute countm1 diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 008e91f78b8..0467f8ac347 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -310,14 +310,26 @@ add_path_to_list (gfc_directorylist **list, const char *path, { gfc_directorylist *dir; const char *p; + char *q; struct stat st; + size_t len; + int i; p = path; while (*p == ' ' || *p == '\t') /* someone might do "-I include" */ if (*p++ == '\0') return; - if (stat (p, &st)) + /* Strip trailing directory separators from the path, as this + will confuse Windows systems. */ + len = strlen (p); + q = (char *) alloca (len + 1); + memcpy (q, p, len + 1); + i = len - 1; + while (i >=0 && IS_DIR_SEPARATOR(q[i])) + q[i--] = '\0'; + + if (stat (q, &st)) { if (errno != ENOENT) gfc_warning_now ("Include directory \"%s\": %s", path, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0ca0c07391f..343611c2587 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/55919 + * add_path_to_list: Copy path to temporary and strip + trailing directory separators before calling stat(). + 2012-01-21 Uros Bizjak <ubizjak@gmail.com> * gcc.dg/tree-ssa/pr55579.c: Cleanup esra tree dump. diff --git a/gcc/testsuite/gfortran.dg/include_8.f90 b/gcc/testsuite/gfortran.dg/include_8.f90 new file mode 100644 index 00000000000..84d04583f89 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/include_8.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +! { dg-options "-J./" } +! PR 55919 - a trailing dir separator would cause a warning +! on Windows. +program main +end program main |