diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-05-30 18:33:28 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-05-30 18:33:28 +0200 |
commit | 9471628798891a7bc2cf21721764520325630c9b (patch) | |
tree | db276b0a5535cbd98a0ca935216413d02a3df989 /gcc | |
parent | d22b7e1406dbb03a6d50d649030b70b6f42d1021 (diff) | |
download | gcc-9471628798891a7bc2cf21721764520325630c9b.zip gcc-9471628798891a7bc2cf21721764520325630c9b.tar.gz gcc-9471628798891a7bc2cf21721764520325630c9b.tar.bz2 |
re PR fortran/14067 (no warning when character data statement overflows declared size)
PR fortran/14067
* trans-const.c (gfc_conv_string_init): Allow variable string
length lower than initialization string length.
From-SVN: r82457
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-const.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fa09538..f942b17 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2004-05-30 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/14067 + * trans-const.c (gfc_conv_string_init): Allow variable string + length lower than initialization string length. + 2004-05-30 Paul Brook <paul@codesourcery.com> PR fortran/15620 diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c index 13f6b83..8a716de 100644 --- a/gcc/fortran/trans-const.c +++ b/gcc/fortran/trans-const.c @@ -90,7 +90,9 @@ gfc_build_string_const (int length, const char *s) } /* Return a string constant with the given length. Used for static - initializers. The constant will be padded to the full length. */ + initializers. The constant will be padded or truncated to match + length. */ + tree gfc_conv_string_init (tree length, gfc_expr * expr) { @@ -106,8 +108,8 @@ gfc_conv_string_init (tree length, gfc_expr * expr) len = TREE_INT_CST_LOW (length); slen = expr->value.character.length; - assert (len >= slen); - if (len != slen) + + if (len > slen) { s = gfc_getmem (len); memcpy (s, expr->value.character.string, slen); |