Author: zoltan
Date: 2007-10-20 12:32:24 -0400 (Sat, 20 Oct 2007)
New Revision: 87854

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/class.c
Log:
2007-10-20  Zoltan Varga  <[EMAIL PROTECTED]>

        * class.c (mono_class_layout_fields): Set size_inited for generic 
classes as well.
        (mono_class_setup_vtable): Obtain overrides for dynamic generic classes 
correctly.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-10-20 16:23:42 UTC (rev 87853)
+++ trunk/mono/mono/metadata/ChangeLog  2007-10-20 16:32:24 UTC (rev 87854)
@@ -1,5 +1,8 @@
 2007-10-20  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * class.c (mono_class_layout_fields): Set size_inited for generic 
classes as well.
+       (mono_class_setup_vtable): Obtain overrides for dynamic generic classes 
correctly.
+
        * class.c (mono_class_setup_methods): Handle dynamic inflated classes 
correctly.
 
        * reflection.c (create_generic_typespec): Initialize 
klass->generic_container

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2007-10-20 16:23:42 UTC (rev 87853)
+++ trunk/mono/mono/metadata/class.c    2007-10-20 16:32:24 UTC (rev 87854)
@@ -1025,8 +1025,10 @@
        MonoClassField *field;
 
        if (class->generic_container ||
-           (class->generic_class && 
class->generic_class->context.class_inst->is_open))
+           (class->generic_class && 
class->generic_class->context.class_inst->is_open)) {
+               class->size_inited = TRUE;
                return;
+       }
 
        /*
         * Enable GC aware auto layout: in this mode, reference
@@ -2128,6 +2130,7 @@
 {
        MonoMethod **overrides;
        MonoGenericContext *context;
+       MonoClass *overrides_class;
        guint32 type_token;
        int onum = 0;
        gboolean ok = TRUE;
@@ -2152,13 +2155,15 @@
        if (class->generic_class) {
                context = mono_class_get_context (class);
                type_token = class->generic_class->container_class->type_token;
+               overrides_class = class->generic_class->container_class;
        } else {
                context = (MonoGenericContext *) class->generic_container;      
        
                type_token = class->type_token;
+               overrides_class = class;
        }
 
        if (class->image->dynamic)
-               mono_reflection_get_dynamic_overrides (class, &overrides, 
&onum);
+               mono_reflection_get_dynamic_overrides (overrides_class, 
&overrides, &onum);
        else {
                /* The following call fails if there are missing methods in the 
type */
                ok = mono_class_get_overrides_full (class->image, type_token, 
&overrides, &onum, context);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to