PR 62215 Reinstate unlinking old module file before renaming.
authorJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>
Fri, 29 Aug 2014 20:46:15 +0000 (20:46 +0000)
committerJanne Blomqvist <jb@gcc.gnu.org>
Fri, 29 Aug 2014 20:46:15 +0000 (23:46 +0300)
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

gcc/fortran/ChangeLog
gcc/fortran/module.c

index a6abbe200380b3fcd1e0fd4d0af1f5ec55d18fe6..003e383afada052bbc153c69dbc6c9c8279e5122 100644 (file)
@@ -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.
index 3d5e247e1962e14cbfdd095339b6fb0f71483798..e8e8c98cb313c4869bb7b707de13264ccae9c35c 100644 (file)
@@ -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));