Author: zoltan
Date: 2008-01-11 09:48:10 -0500 (Fri, 11 Jan 2008)
New Revision: 92669
Modified:
trunk/mono/mono/metadata/ChangeLog
trunk/mono/mono/metadata/metadata.c
trunk/mono/mono/metadata/reflection.c
Log:
2008-01-11 Zoltan Varga <[EMAIL PROTECTED]>
* reflection.c (reflection_methodbuilder_to_mono_method): No need to
set container->is_method, it was set earlier.
* metadata.c (type_in_image): Handle MVARs which belong to not finished
generic methods.
* reflection.c (mono_reflection_initialize_generic_parameter): Set
is_method of the generic container to TRUE for methods.
Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog 2008-01-11 14:30:05 UTC (rev 92668)
+++ trunk/mono/mono/metadata/ChangeLog 2008-01-11 14:48:10 UTC (rev 92669)
@@ -1,3 +1,21 @@
+2008-01-11 Zoltan Varga <[EMAIL PROTECTED]>
+
+ * reflection.c (reflection_methodbuilder_to_mono_method): No need to
+ set container->is_method, it was set earlier.
+
+ * metadata.c (type_in_image): Handle MVARs which belong to not finished
+ generic methods.
+
+ * reflection.c (mono_reflection_initialize_generic_parameter): Set
+ is_method of the generic container to TRUE for methods.
+
+2008-01-10 Zoltan Varga <[EMAIL PROTECTED]>
+
+ * metadata.c (type_in_image): Handle type parameters properly.
+
+ * class-internals.h (MonoGenericParam): Add an 'image' argument to track
+ memory ownership of this structure.
+
2008-01-10 Rodrigo Kumpera <[EMAIL PROTECTED]>
* verify.c (get_boxable_mono_type): make typedref types been just
Modified: trunk/mono/mono/metadata/metadata.c
===================================================================
--- trunk/mono/mono/metadata/metadata.c 2008-01-11 14:30:05 UTC (rev 92668)
+++ trunk/mono/mono/metadata/metadata.c 2008-01-11 14:48:10 UTC (rev 92669)
@@ -2072,6 +2072,9 @@
case MONO_TYPE_MVAR:
if (type->data.generic_param->owner) {
g_assert (type->data.generic_param->owner->is_method);
+ if (!type->data.generic_param->owner->owner.method)
+ /* RefEmit created generic param whose method
is not finished */
+ return FALSE;
return
type->data.generic_param->owner->owner.method->klass->image == image;
} else {
return type->data.generic_param->image == image;
Modified: trunk/mono/mono/metadata/reflection.c
===================================================================
--- trunk/mono/mono/metadata/reflection.c 2008-01-11 14:30:05 UTC (rev
92668)
+++ trunk/mono/mono/metadata/reflection.c 2008-01-11 14:48:10 UTC (rev
92669)
@@ -8690,7 +8690,6 @@
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++) {
@@ -9534,8 +9533,10 @@
param = g_new0 (MonoGenericParam, 1);
if (gparam->mbuilder) {
- if (!gparam->mbuilder->generic_container)
+ if (!gparam->mbuilder->generic_container) {
gparam->mbuilder->generic_container = g_new0
(MonoGenericContainer, 1);
+ gparam->mbuilder->generic_container->is_method = TRUE;
+ }
param->owner = gparam->mbuilder->generic_container;
} else if (gparam->tbuilder) {
g_assert (gparam->tbuilder->generic_container);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches