Author: zoltan
Date: 2007-10-20 12:08:16 -0400 (Sat, 20 Oct 2007)
New Revision: 87851
Modified:
trunk/mono/mono/metadata/ChangeLog
trunk/mono/mono/metadata/class.c
trunk/mono/mono/metadata/reflection.c
Log:
2007-10-20 Zoltan Varga <[EMAIL PROTECTED]>
* class.c (mono_class_setup_methods): Handle dynamic inflated classes
correctly.
* reflection.c (create_generic_typespec): Initialize
klass->generic_container
if needed.
(reflection_methodbuilder_to_mono_method): Set container->is_method to
TRUE.
Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog 2007-10-20 15:42:57 UTC (rev 87850)
+++ trunk/mono/mono/metadata/ChangeLog 2007-10-20 16:08:16 UTC (rev 87851)
@@ -1,3 +1,11 @@
+2007-10-20 Zoltan Varga <[EMAIL PROTECTED]>
+
+ * class.c (mono_class_setup_methods): Handle dynamic inflated classes
correctly.
+
+ * reflection.c (create_generic_typespec): Initialize
klass->generic_container
+ if needed.
+ (reflection_methodbuilder_to_mono_method): Set container->is_method to
TRUE.
+
2007-10-18 Jonathan Chambers <[EMAIL PROTECTED]>
* marshal.c: Use correct key when removing item
Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c 2007-10-20 15:42:57 UTC (rev 87850)
+++ trunk/mono/mono/metadata/class.c 2007-10-20 16:08:16 UTC (rev 87851)
@@ -1273,13 +1273,14 @@
return;
}
- if (class->generic_class && !class->generic_class->is_dynamic) {
+ if (class->generic_class) {
MonoClass *gklass = class->generic_class->container_class;
mono_class_init (gklass);
mono_class_setup_methods (gklass);
/* The + 1 makes this always non-NULL to pass the check in
mono_class_setup_methods () */
+ class->method.count = gklass->method.count;
methods = g_new0 (MonoMethod *, class->method.count + 1);
for (i = 0; i < class->method.count; i++) {
Modified: trunk/mono/mono/metadata/reflection.c
===================================================================
--- trunk/mono/mono/metadata/reflection.c 2007-10-20 15:42:57 UTC (rev
87850)
+++ trunk/mono/mono/metadata/reflection.c 2007-10-20 16:08:16 UTC (rev
87851)
@@ -2551,6 +2551,9 @@
g_assert (tb->generic_params);
klass = mono_class_from_mono_type (tb->type.type);
+ if (tb->generic_container)
+ mono_reflection_create_generic_class (tb);
+
sigbuffer_add_value (&buf, MONO_TYPE_GENERICINST);
g_assert (klass->generic_container);
sigbuffer_add_value (&buf, klass->byval_arg.type);
@@ -8584,6 +8587,7 @@
m->generic_container = container = rmb->generic_container;
container->type_argc = count;
container->type_params = g_new0 (MonoGenericParam, count);
+ container->is_method = TRUE;
container->owner.method = m;
for (i = 0; i < count; i++) {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches