+2008-05-07 Zoltan Varga <vargaz@gmail.com>
+
+ * mini.c (mini_get_method): Check whenever the method class is an open generic
+ type, and return NULL in that case, causing a verification error. Fixes
+ #384123.
+
2008-05-06 Rodrigo Kumpera <rkumpera@novell.com>
* driver.c (mono_main): Revert r102623. The right
}
static inline MonoMethod *
-mini_get_method (MonoMethod *m, guint32 token, MonoClass *klass, MonoGenericContext *context)
+mini_get_method_allow_open (MonoMethod *m, guint32 token, MonoClass *klass, MonoGenericContext *context)
{
MonoMethod *method;
return method;
}
+static inline MonoMethod *
+mini_get_method (MonoMethod *m, guint32 token, MonoClass *klass, MonoGenericContext *context)
+{
+ MonoMethod *method = mini_get_method_allow_open (m, token, klass, context);
+
+ if (method && mono_class_is_open_constructed_type (&method->klass->byval_arg))
+ return NULL;
+
+ return method;
+}
+
static inline MonoClass*
mini_get_class (MonoMethod *method, guint32 token, MonoGenericContext *context)
{
if (!dont_verify && !cfg->skip_visibility) {
MonoMethod *target_method = cil_method;
if (method->is_inflated) {
- target_method = mini_get_method (method, token, NULL, &method_definition->generic_container->context);
+ target_method = mini_get_method_allow_open (method, token, NULL, &method_definition->generic_container->context);
}
if (!mono_method_can_access_method (method_definition, target_method) &&
!mono_method_can_access_method (method, cil_method))