aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2018-09-13 18:43:44 +0000
committerJeff Law <law@gcc.gnu.org>2018-09-13 12:43:44 -0600
commit0a4b0aa140d187faa2f72da821de428a6a557da7 (patch)
tree15c606c53e7617afa9a43db60e7f9038589630cb /gcc/cp
parent8b393e9fb21ee2889eb341ec20e6e84e6f4de2a5 (diff)
downloadgcc-0a4b0aa140d187faa2f72da821de428a6a557da7.zip
gcc-0a4b0aa140d187faa2f72da821de428a6a557da7.tar.gz
gcc-0a4b0aa140d187faa2f72da821de428a6a557da7.tar.bz2
typeck2.c (digest_init_r): Fix overlength strings.
* typeck2.c (digest_init_r): Fix overlength strings. * vtable-class-hierarchy.c (build_key_buffer_arg): Make string literal NUL terminated. From-SVN: r264286
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/typeck2.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ca8939d..8ba87ce 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * typeck2.c (digest_init_r): Fix overlength strings.
+ * vtable-class-hierarchy.c (build_key_buffer_arg): Make string literal
+ NUL terminated.
+
2018-09-13 Ville Voutilainen <ville.voutilainen@gmail.com>
PR c++/87093
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 7cd0a7e..b13ed26 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1112,8 +1112,13 @@ digest_init_r (tree type, tree init, int nested, int flags,
counted in the length of the constant, but in C++ this would
be invalid. */
if (size < TREE_STRING_LENGTH (init))
- permerror (loc, "initializer-string for array "
- "of chars is too long");
+ {
+ permerror (loc, "initializer-string for array "
+ "of chars is too long");
+
+ init = build_string (size, TREE_STRING_POINTER (init));
+ TREE_TYPE (init) = type;
+ }
}
return init;
}