aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/data.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>2006-10-31 21:15:22 +0100
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2006-10-31 20:15:22 +0000
commit150675a88bae488e66055ad2a1eba0309ecabce3 (patch)
tree1024583b95a9dd9e2598bb3e446caa4624ef6e9f /gcc/fortran/data.c
parent70198b9f22c93aeab38aacafe9e2aec87d126813 (diff)
downloadgcc-150675a88bae488e66055ad2a1eba0309ecabce3.zip
gcc-150675a88bae488e66055ad2a1eba0309ecabce3.tar.gz
gcc-150675a88bae488e66055ad2a1eba0309ecabce3.tar.bz2
re PR fortran/29067 (gfc_resolve_expr(): Bad expression type)
PR fortran/29067 * decl.c (gfc_set_constant_character_len): NULL-terminate the character constant string. * data.c (create_character_intializer): Likewise. * expr.c (gfc_simplify_expr): NULL-terminate the substring character constant. * primary.c (match_hollerith_constant): NULL-terminate the character constant string. * gfortran.dg/pr29067.f: New test. From-SVN: r118338
Diffstat (limited to 'gcc/fortran/data.c')
-rw-r--r--gcc/fortran/data.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c
index 2ab6f50..d53f92c 100644
--- a/gcc/fortran/data.c
+++ b/gcc/fortran/data.c
@@ -155,7 +155,8 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts,
init->expr_type = EXPR_CONSTANT;
init->ts = *ts;
- dest = gfc_getmem (len);
+ dest = gfc_getmem (len + 1);
+ dest[len] = '\0';
init->value.character.length = len;
init->value.character.string = dest;
/* Blank the string if we're only setting a substring. */