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

Reply via email to