From: Richard Stallman Date: Tue, 20 Oct 1992 08:57:43 +0000 (+0000) Subject: (make_node, copy_node): Don't assume node length is multiple of int. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2f145821b7d0956d775bc012722ddc68149ed37d;p=gcc.git (make_node, copy_node): Don't assume node length is multiple of int. From-SVN: r2524 --- diff --git a/gcc/tree.c b/gcc/tree.c index 4fb48e6780b..142254489a6 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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;