(make_node, copy_node): Don't assume node length is multiple of int.

From-SVN: r2524
This commit is contained in:
Richard Stallman 1992-10-20 08:57:43 +00:00
parent 71bde1f321
commit 2f145821b7
1 changed files with 7 additions and 3 deletions

View File

@ -877,11 +877,12 @@ make_node (code)
tree_node_sizes[(int)kind] += length;
#endif
/* We assume here that the length of a tree node is a multiple of the
size of an int. Rounding up won't work because it would clobber
the next object. */
/* Clear a word at a time. */
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = 0;
/* Clear any extra bytes. */
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
((char *) t)[i] = 0;
TREE_SET_CODE (t, code);
if (obstack == &permanent_obstack)
@ -978,6 +979,9 @@ copy_node (node)
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = ((int *) node)[i];
/* Clear any extra bytes. */
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
((char *) t)[i] = 0;
TREE_CHAIN (t) = 0;