aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2009-02-27 07:44:59 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2009-02-27 07:44:59 +0100
commit99b54b33b4a01fe8a49502779a2ea90d902704cc (patch)
tree9ec675d981b772586a61d5231e269a712447149f /gcc/fortran
parentba9b9144858c41323640e981664f0c65f81e3b7f (diff)
downloadgcc-99b54b33b4a01fe8a49502779a2ea90d902704cc.zip
gcc-99b54b33b4a01fe8a49502779a2ea90d902704cc.tar.gz
gcc-99b54b33b4a01fe8a49502779a2ea90d902704cc.tar.bz2
re PR fortran/39309 (.mod file versioning causes error instead of overwritting the file)
2009-02-27 Tobias Burnus <burnus@net-b.de> PR fortran/39309 * module.c (read_md5_from_module_file): Include mod version in had-changed test. From-SVN: r144461
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/module.c14
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4bf4625..5d972c2 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/39309
+ * module.c (read_md5_from_module_file): Include mod version
+ in had-changed test.
+
2009-02-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/39295
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index bfc4ef9..c234879 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -4739,8 +4739,18 @@ read_md5_from_module_file (const char * filename, unsigned char md5[16])
return -1;
/* Read two lines. */
- if (fgets (buf, sizeof (buf) - 1, file) == NULL
- || fgets (buf, sizeof (buf) - 1, file) == NULL)
+ if (fgets (buf, sizeof (buf) - 1, file) == NULL)
+ {
+ fclose (file);
+ return -1;
+ }
+
+ /* The file also needs to be overwritten if the version number changed. */
+ n = strlen ("GFORTRAN module version " MOD_VERSION " created");
+ if (strncmp (buf, "GFORTRAN module version " MOD_VERSION " created", n) != 0)
+ return -1;
+
+ if (fgets (buf, sizeof (buf) - 1, file) == NULL)
{
fclose (file);
return -1;