diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2022-03-23 16:54:12 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2022-03-23 16:54:12 +0100 |
commit | 5e33fea21957c97d63e3738be6056ae2a94e3284 (patch) | |
tree | 66283c2f660e7acf4b529b2848716bac8a3db57a /gcc/fortran | |
parent | d9792f8d227cdd409c2b082ef0685b47ccfaa334 (diff) | |
download | gcc-5e33fea21957c97d63e3738be6056ae2a94e3284.zip gcc-5e33fea21957c97d63e3738be6056ae2a94e3284.tar.gz gcc-5e33fea21957c97d63e3738be6056ae2a94e3284.tar.bz2 |
Fortran: Fix directory stat check for '.' [PR103560]
MinGW does not like a call to 'stat' for './' via gfc_do_check_include_dir.
Solution: Only append '/' when concatenating the path with the filename.
gcc/fortran/ChangeLog:
PR fortran/103560
* scanner.cc (add_path_to_list): Don't append '/' to the
save include path.
(open_included_file): Use '/' in concatenating path + file name.
* module.cc (gzopen_included_file_1): Likewise.
gcc/testsuite/ChangeLog:
PR fortran/103560
* gfortran.dg/include_14.f90: Update dg-warning.
* gfortran.dg/include_17.f90: Likewise.
* gfortran.dg/include_18.f90: Likewise.
* gfortran.dg/include_6.f90: Update dg-*.
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/module.cc | 3 | ||||
-rw-r--r-- | gcc/fortran/scanner.cc | 7 |
2 files changed, 5 insertions, 5 deletions
diff --git a/gcc/fortran/module.cc b/gcc/fortran/module.cc index 281b1b1..85aa153 100644 --- a/gcc/fortran/module.cc +++ b/gcc/fortran/module.cc @@ -1095,8 +1095,9 @@ gzopen_included_file_1 (const char *name, gfc_directorylist *list, if (module && !p->use_for_modules) continue; - fullname = (char *) alloca(strlen (p->path) + strlen (name) + 1); + fullname = (char *) alloca(strlen (p->path) + strlen (name) + 2); strcpy (fullname, p->path); + strcat (fullname, "/"); strcat (fullname, name); f = gzopen (fullname, "r"); diff --git a/gcc/fortran/scanner.cc b/gcc/fortran/scanner.cc index b52282b..2dff251 100644 --- a/gcc/fortran/scanner.cc +++ b/gcc/fortran/scanner.cc @@ -409,9 +409,7 @@ add_path_to_list (gfc_directorylist **list, const char *path, *list = dir; dir->use_for_modules = use_for_modules; dir->warn = warn; - dir->path = XCNEWVEC (char, strlen (p) + 2); - strcpy (dir->path, p); - strcat (dir->path, "/"); /* make '/' last character */ + dir->path = xstrdup (p); } /* defer_warn is set to true while parsing the commandline. */ @@ -476,8 +474,9 @@ open_included_file (const char *name, gfc_directorylist *list, if (module && !p->use_for_modules) continue; - fullname = (char *) alloca(strlen (p->path) + strlen (name) + 1); + fullname = (char *) alloca(strlen (p->path) + strlen (name) + 2); strcpy (fullname, p->path); + strcat (fullname, "/"); strcat (fullname, name); f = gfc_open_file (fullname); |