lex.c (make_lang_type): Clear the whole struct lang_type, not only the first multiple...
authorAndreas Schwab <schwab@issan.cs.uni-dortmund.de>
Wed, 25 Nov 1998 04:06:42 +0000 (04:06 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Wed, 25 Nov 1998 04:06:42 +0000 (04:06 +0000)
* lex.c (make_lang_type): Clear the whole struct lang_type, not
only the first multiple of sizeof (int).

From-SVN: r23848

gcc/cp/ChangeLog
gcc/cp/lex.c

index 94d8d3a8ff481e8eedad79ddbf2195efca8ec150..940d106dedc938bbcff7af221539e022011598fc 100644 (file)
@@ -1,3 +1,8 @@
+1998-11-25  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * lex.c (make_lang_type): Clear the whole struct lang_type, not
+       only the first multiple of sizeof (int).
+
 1998-11-24  Jason Merrill  <jason@yorick.cygnus.com>
 
        * decl.c (start_decl): An explicit specialization of a static data
index 461f73ea4bf1f2562cdf355c415a0889d277e4db..5d9fc80969f2ef833e81bbe7b80901f4fc510e17 100644 (file)
@@ -4677,9 +4677,8 @@ make_lang_type (code)
   if (IS_AGGR_TYPE_CODE (code))
     {
       struct obstack *obstack = current_obstack;
-      register int i = sizeof (struct lang_type) / sizeof (int);
-      register int *pi;
-      
+      struct lang_type *pi;
+
       SET_IS_AGGR_TYPE (t, 1);
 
       if (! TREE_PERMANENT (t))
@@ -4687,11 +4686,10 @@ make_lang_type (code)
       else
        my_friendly_assert (obstack == &permanent_obstack, 236);
 
-      pi = (int *) obstack_alloc (obstack, sizeof (struct lang_type));
-      while (i > 0)
-       pi[--i] = 0;
+      pi = (struct lang_type *) obstack_alloc (obstack, sizeof (struct lang_type));
+      bzero ((char *) pi, (int) sizeof (struct lang_type));
 
-      TYPE_LANG_SPECIFIC (t) = (struct lang_type *) pi;
+      TYPE_LANG_SPECIFIC (t) = pi;
       CLASSTYPE_AS_LIST (t) = build_expr_list (NULL_TREE, t);
       SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown);
       CLASSTYPE_INTERFACE_ONLY (t) = interface_only;