* symfile.c (fill_in_vptr_fieldno): Don't call check_stub_type.
authorJim Kingdon <jkingdon@engr.sgi.com>
Fri, 26 Apr 1991 23:00:55 +0000 (23:00 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Fri, 26 Apr 1991 23:00:55 +0000 (23:00 +0000)
Return void not int. (also declarations in symfile.h and value.h).
Deal with multiple inheritance.

gdb/symfile.c

index 5241959dc0ca8a17b80ed27e36e2cb4ee665bae3..e1345dbcb834318b16a7b88a71664c78a242a06c 100644 (file)
@@ -681,18 +681,28 @@ reread_symbols ()
     }
 }
 
-
 /* This function is really horrible, but to avoid it, there would need
    to be more filling in of forward references.  */
-int
+void
 fill_in_vptr_fieldno (type)
      struct type *type;
 {
-  check_stub_type (type);
   if (TYPE_VPTR_FIELDNO (type) < 0)
-    TYPE_VPTR_FIELDNO (type) =
-      fill_in_vptr_fieldno (TYPE_BASECLASS (type, 1));
-  return TYPE_VPTR_FIELDNO (type);
+    {
+      int i;
+      for (i = 1; i < TYPE_N_BASECLASSES (type); i++)
+       {
+         fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
+         if (TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i)) >= 0)
+           {
+             TYPE_VPTR_FIELDNO (type)
+               = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i));
+             TYPE_VPTR_BASETYPE (type)
+               = TYPE_VPTR_BASETYPE (TYPE_BASECLASS (type, i));
+             break;
+           }
+       }
+    }
 }
 \f
 /* Functions to handle complaints during symbol reading.  */