fixed bug with 0L; don't give warning on char x[3] = "abc"

This commit is contained in:
eck 1990-02-09 10:35:44 +00:00
parent ba6c223113
commit d7d56d2cbb
2 changed files with 9 additions and 3 deletions

View file

@ -806,7 +806,7 @@ struct token *ptok;
fund = LONG; fund = LONG;
else fund = UNSIGNED; else fund = UNSIGNED;
} else if((val & full_mask[(int)long_size]) == val) { } else if((val & full_mask[(int)long_size]) == val) {
if (val > 0) fund = LONG; if (val >= 0) fund = LONG;
else fund = ULONG; else fund = ULONG;
} else { /* sizeof(arith) is greater than long_size */ } else { /* sizeof(arith) is greater than long_size */
ASSERT(arith_size > long_size); ASSERT(arith_size > long_size);

View file

@ -582,8 +582,14 @@ ch_array(tpp, ex)
else { else {
arith dim = tp->tp_size / tp->tp_up->tp_size; arith dim = tp->tp_size / tp->tp_up->tp_size;
if (length > dim) { #ifdef LINT
expr_warning(ex, "too many initialisers"); 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; length = dim;
} }