From d7d56d2cbb54bb4711b4ef1d7c0b671398f680c0 Mon Sep 17 00:00:00 2001 From: eck Date: Fri, 9 Feb 1990 10:35:44 +0000 Subject: [PATCH] fixed bug with 0L; don't give warning on char x[3] = "abc" --- lang/cem/cemcom.ansi/LLlex.c | 2 +- lang/cem/cemcom.ansi/ival.g | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lang/cem/cemcom.ansi/LLlex.c b/lang/cem/cemcom.ansi/LLlex.c index 0ea8aa9d6..9f6dfb8eb 100644 --- a/lang/cem/cemcom.ansi/LLlex.c +++ b/lang/cem/cemcom.ansi/LLlex.c @@ -806,7 +806,7 @@ struct token *ptok; fund = LONG; else fund = UNSIGNED; } else if((val & full_mask[(int)long_size]) == val) { - if (val > 0) fund = LONG; + if (val >= 0) fund = LONG; else fund = ULONG; } else { /* sizeof(arith) is greater than long_size */ ASSERT(arith_size > long_size); diff --git a/lang/cem/cemcom.ansi/ival.g b/lang/cem/cemcom.ansi/ival.g index e6c185b0a..9b2760545 100644 --- a/lang/cem/cemcom.ansi/ival.g +++ b/lang/cem/cemcom.ansi/ival.g @@ -582,8 +582,14 @@ ch_array(tpp, ex) else { arith dim = tp->tp_size / tp->tp_up->tp_size; - if (length > dim) { - expr_warning(ex, "too many initialisers"); +#ifdef LINT + if (length == dim + 1) { + expr_warning(ex, "array is not null-terminated"); + } else +#else + if (length > dim + 1) { +#endif + expr_strict(ex, "too many initialisers"); } length = dim; } -- 2.34.1