aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2013-01-21 19:34:49 +0000
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2013-01-21 19:34:49 +0000
commit86af97bd8e79bf58aa28881c26e1ed31fbf86cd7 (patch)
treea497b79fd25f505a51f14cd7f475f9a76e186e43
parent94dd03a68979bfecb9cbe028d4feb8e401c6edf2 (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/ChangeLog5
-rw-r--r--gcc/fortran/scanner.c14
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/include_8.f906
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