From fe9ef5d7b76fd06c4b39374884e3ef39c23827fb Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Mon, 3 May 1993 23:02:49 +0000 Subject: [PATCH] (digest_init): Check size properly for wide-string. From-SVN: r4309 --- gcc/c-typeck.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 96c59ec68a8..9a4cdec1b6c 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4829,9 +4829,13 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat) { register int size = TREE_INT_CST_LOW (TYPE_SIZE (type)); size = (size + BITS_PER_UNIT - 1) / BITS_PER_UNIT; - /* Subtract 1 because it's ok to ignore the terminating null char + /* Subtract 1 (or sizeof (wchar_t)) + because it's ok to ignore the terminating null char that is counted in the length of the constant. */ - if (size < TREE_STRING_LENGTH (string) - 1) + if (size < TREE_STRING_LENGTH (string) + - (TYPE_PRECISION (typ1) != TYPE_PRECISION (char_type_node) + ? TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT + : 1)) pedwarn_init ( "initializer-string for array of chars%s is too long", " `%s'", ofwhat); -- 2.30.2