}
else {
arith dim = tp->tp_size / tp->tp_up->tp_size;
+ extern char options[];
+ if (length > dim) {
+ if (options['R'])
+ too_many_initialisers(ex);
+ else { /* don't take the null byte into account */
+ if (length > dim + 1)
+ expr_warning(ex,
+ "too many initialisers");
+ length = dim;
+ }
+ }
ntopad = align(dim, word_align) - length;
- if (length > dim)
- expr_error(ex,
- "too many characters in initialiser string");
}
/* throw out the characters of the already prepared string */
- do
+ while (length-- > 0)
C_con_ucon(long2str((long)*s++ & 0xFF, 10), (arith)1);
- while (--length > 0);
/* pad the allocated memory (the alignment has been calculated) */
while (ntopad-- > 0)
con_nullbyte();