From: ceriel Date: Mon, 25 Jan 1988 16:14:01 +0000 (+0000) Subject: fixed a bug with string-initializers X-Git-Tag: release-5-5~3645 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b19a178e2ed3e7b5c9a07cfac75cdc5b91a181c0;p=ack.git fixed a bug with string-initializers --- diff --git a/lang/cem/cemcom/ival.g b/lang/cem/cemcom/ival.g index 35557de91..29d0009af 100644 --- a/lang/cem/cemcom/ival.g +++ b/lang/cem/cemcom/ival.g @@ -544,29 +544,26 @@ ch_array(tpp, ex) register struct type *tp = *tpp; register arith length = ex->SG_LEN; char *s; - arith ntopad; ASSERT(ex->ex_class == String); if (tp->tp_size == (arith)-1) { /* set the dimension */ tp = *tpp = construct_type(ARRAY, tp->tp_up, length); - ntopad = align(tp->tp_size, (int) word_size) - tp->tp_size; } else { arith dim = tp->tp_size / tp->tp_up->tp_size; if (length > dim) { expr_warning(ex, "too many initialisers"); - length = dim; } - ntopad = align(dim,(int) word_size) - length; + length = dim; } /* throw out the characters of the already prepared string */ - s = Malloc((unsigned) (length + ntopad)); - clear(s, (int) (length + ntopad)); + s = Malloc((unsigned) (length)); + clear(s, (int) (length)); strncpy(s, ex->SG_VALUE, (int) length); free(ex->SG_VALUE); - str_cst(s, (int) (length + ntopad)); + str_cst(s, (int) (length)); free(s); }