diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-02-27 07:44:59 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-02-27 07:44:59 +0100 |
commit | 99b54b33b4a01fe8a49502779a2ea90d902704cc (patch) | |
tree | 9ec675d981b772586a61d5231e269a712447149f /gcc/fortran | |
parent | ba9b9144858c41323640e981664f0c65f81e3b7f (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/module.c | 14 |
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; |