const GenericParamTableEntry **a_entry = (const GenericParamTableEntry **) a;
const GenericParamTableEntry **b_entry = (const GenericParamTableEntry **) b;
- return (*b_entry)->owner - (*a_entry)->owner;
+ if ((*b_entry)->owner == (*a_entry)->owner)
+ return
+ (*a_entry)->gparam->type.type->data.generic_param->num -
+ (*b_entry)->gparam->type.type->data.generic_param->num;
+ else
+ return (*b_entry)->owner - (*a_entry)->owner;
}
static int
#endif
assembly->assembly.dynamic = TRUE;
+ assembly->assembly.corlib_internal = assemblyb->corlib_internal;
assemblyb->assembly.assembly = (MonoAssembly*)assembly;
assembly->assembly.basedir = mono_string_to_utf8 (assemblyb->dir);
if (assemblyb->culture)
mono_defaults.corlib, "System.Reflection", "Assembly");
res = (MonoReflectionAssembly *)mono_object_new (domain, System_Reflection_Assembly);
res->assembly = assembly;
+
CACHE_OBJECT (assembly, res, NULL);
return res;
}
break;
}
/* it may be a boxed value or a Type */
- case MONO_TYPE_OBJECT: {
- MonoClass *klass = mono_object_class (arg);
+ case MONO_TYPE_OBJECT: {\r
+ MonoClass *klass;
char *str;
guint32 slen;
+\r
+ if (arg == NULL) {\r
+ *p++ = MONO_TYPE_STRING; // It's same hack as MS uses\r
+ *p++ = 0xFF;\r
+ break;\r
+ }\r
+ klass = mono_object_class (arg);
+
if (mono_object_isinst (arg, mono_defaults.monotype_class)) {
*p++ = 0x50;
goto handle_type;
tb->generic_container = g_new0 (MonoGenericContainer, 1);
tb->generic_container->klass = klass;
- tb->generic_container->context = g_new0 (MonoGenericContext, 1);
- tb->generic_container->context->container = tb->generic_container;
+ tb->generic_container->context.container = tb->generic_container;
}
/*
MonoGenericClass *ogclass = gclass;
ogclass->context = g_new0 (MonoGenericContext, 1);
+ ogclass->context->container = ogclass->container;
ogclass->context->gclass = ogclass;
gclass = g_new0 (MonoGenericClass, 1);
gclass->parent = parent;
gclass->context = g_new0 (MonoGenericContext, 1);
+ gclass->context->container = gclass->container;
gclass->context->gclass = gclass;
if (!strcmp (((MonoObject *) type)->vtable->klass->name, "TypeBuilder")) {
ginst = mono_metadata_lookup_generic_inst (ginst);
gmethod = g_new0 (MonoGenericMethod, 1);
+ gmethod->container = container;
gmethod->inst = ginst;
inflated = g_hash_table_lookup (container->method_hash, gmethod);
gmethod->reflection_info = rmethod;
context = g_new0 (MonoGenericContext, 1);
+ context->container = container;
context->gclass = method->klass->generic_class;
context->gmethod = gmethod;
}
context = g_new0 (MonoGenericContext, 1);
+ context->container = gclass->container;
context->gclass = gclass;
context->gmethod = gmethod;