re PR fortran/14067 (no warning when character data statement overflows declared...
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
Sun, 30 May 2004 16:33:28 +0000 (18:33 +0200)
committerTobias Schlüter <tobi@gcc.gnu.org>
Sun, 30 May 2004 16:33:28 +0000 (18:33 +0200)
PR fortran/14067
* trans-const.c (gfc_conv_string_init): Allow variable string
length lower than initialization string length.

From-SVN: r82457

gcc/fortran/ChangeLog
gcc/fortran/trans-const.c

index fa09538d58587cf70968a54977b42b168c55f300..f942b17832eb480649dfae2bcfcea40e0703880e 100644 (file)
@@ -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
index 13f6b83c8b38750dd761f5758901d6c84faa6b35..8a716de6c6c6fdcb36bda27b9d920153139c3f9b 100644 (file)
@@ -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);