2006-03-24 Martin Baulig <martin@ximian.com>
authorMartin Baulig <martin@novell.com>
Fri, 24 Mar 2006 19:16:42 +0000 (19:16 -0000)
committerMartin Baulig <martin@novell.com>
Fri, 24 Mar 2006 19:16:42 +0000 (19:16 -0000)
* class.c (mono_class_setup_fields): Added support for generic
instances; fixes #77580.

svn path=/trunk/mono/; revision=58478

mono/metadata/ChangeLog
mono/metadata/class.c

index 4a90eebf332f4f6b1449d96bf5be4bc1405c43d6..f831ed0d8e4c8f972ed9ff23dbab61d3a825b76f 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-24  Martin Baulig  <martin@ximian.com>
+
+       * class.c (mono_class_setup_fields): Added support for generic
+       instances; fixes #77580.
+
 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
index 8801b31d29f18bc16429e9d0aab27a65061234a9..1545ca95ac808e80ea664f2842ff1f3757fbe360 100644 (file)
@@ -770,7 +770,7 @@ static void
 mono_class_setup_fields (MonoClass *class)
 {
        MonoImage *m = class->image; 
-       const int top = class->field.count;
+       int top = class->field.count;
        guint32 layout = class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
        MonoTableInfo *t = &m->tables [MONO_TABLE_FIELD];
        int i, blittable = TRUE;
@@ -784,8 +784,11 @@ mono_class_setup_fields (MonoClass *class)
        if (class->size_inited)
                return;
 
-       if (class->inited)
-               mono_class_init (class);
+       if (class->generic_class) {
+               MonoClass *gklass = class->generic_class->container_class;
+               mono_class_setup_fields (gklass);
+               top = gklass->field.count;
+       }
 
        class->instance_size = 0;
        class->class_size = 0;