aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>2014-08-29 20:46:15 +0000
committerJanne Blomqvist <jb@gcc.gnu.org>2014-08-29 23:46:15 +0300
commit70103202db7460b1598f22d09a56ba6db483673e (patch)
tree27689a8202c47dbe0c36077e2bfb5ed2221f4b74
parent08216dfb85350e19d72571f3d0dbdcc377ab9500 (diff)
downloadgcc-70103202db7460b1598f22d09a56ba6db483673e.zip
gcc-70103202db7460b1598f22d09a56ba6db483673e.tar.gz
gcc-70103202db7460b1598f22d09a56ba6db483673e.tar.bz2
PR 62215 Reinstate unlinking old module file before renaming.
2014-08-29 Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> PR fortran/62215 * module.c (gfc_dump_module): Unlink old module file before renaming new one. From-SVN: r214742
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/module.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a6abbe2..003e383 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2014-08-29 Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com>
+
+ PR fortran/62215
+ * module.c (gfc_dump_module): Unlink old module file before
+ renaming new one.
+
2014-08-26 Thomas Koenig <tkoenig@gcc.gnu.org>
* frontend_passes (expr_array): Replace by vec template.
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 3d5e247..e8e8c98 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -6040,6 +6040,9 @@ gfc_dump_module (const char *name, int dump_flag)
|| crc_old != crc)
{
/* Module file have changed, replace the old one. */
+ if (unlink (filename) && errno != ENOENT)
+ gfc_fatal_error ("Can't delete module file '%s': %s", filename,
+ xstrerror (errno));
if (rename (filename_tmp, filename))
gfc_fatal_error ("Can't rename module file '%s' to '%s': %s",
filename_tmp, filename, xstrerror (errno));