Fix parent instantantiation verification.
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 11 Jan 2011 11:38:02 +0000 (12:38 +0100)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 11 Jan 2011 11:38:02 +0000 (12:38 +0100)
* verify.c (mono_verifier_verify_class): Don't verify
the parent instantiation of generic instances as those are
allowed to have free variables. Use the right context for
GTD too.

Fixes build breakage.

mono/metadata/verify.c

index adb93fac17299d2a953d79f8e92dd21974f80d90..223a8f94ebedc0d76b048e2f2312fffe5159134c 100644 (file)
@@ -6066,8 +6066,11 @@ mono_verifier_verify_class (MonoClass *class)
                        return FALSE;
                if (!class->generic_class && class->parent->generic_container)
                        return FALSE;
-               if (class->parent->generic_class) {
-                       if (!mono_type_is_valid_type_in_context (&class->parent->byval_arg, mono_class_get_context (class)))
+               if (class->parent->generic_class && !class->generic_class) {
+                       MonoGenericContext *context = mono_class_get_context (class);
+                       if (class->generic_container)
+                               context = &class->generic_container->context;
+                       if (!mono_type_is_valid_type_in_context (&class->parent->byval_arg, context))
                                return FALSE;
                }
        }