Author: raja
Date: 2005-11-28 04:52:05 -0500 (Mon, 28 Nov 2005)
New Revision: 53542

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/loader.c
   trunk/mono/mono/metadata/metadata.c
Log:
* metadata.c (do_mono_metadata_parse_generic_class): Avoid
side-effects in g_assert.
* loader.c (mono_get_method_from_token): Resolve klass earlier so
that we don't potentially lose information.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2005-11-28 08:03:07 UTC (rev 53541)
+++ trunk/mono/mono/metadata/ChangeLog  2005-11-28 09:52:05 UTC (rev 53542)
@@ -1,3 +1,10 @@
+2005-11-28  Raja R Harinath  <[EMAIL PROTECTED]>
+
+       * metadata.c (do_mono_metadata_parse_generic_class): Avoid
+       side-effects in g_assert.
+       * loader.c (mono_get_method_from_token): Resolve klass earlier so
+       that we don't potentially lose information.
+
 2005-11-26  Dick Porter  <[EMAIL PROTECTED]>
 
        * icall.c:

Modified: trunk/mono/mono/metadata/loader.c
===================================================================
--- trunk/mono/mono/metadata/loader.c   2005-11-28 08:03:07 UTC (rev 53541)
+++ trunk/mono/mono/metadata/loader.c   2005-11-28 09:52:05 UTC (rev 53542)
@@ -1140,6 +1140,11 @@
                result = (MonoMethod *)g_new0 (MonoMethodPInvoke, 1);
        else 
                result = (MonoMethod *)g_new0 (MonoMethodNormal, 1);
+
+       if (!klass) {
+               guint32 type = mono_metadata_typedef_from_method (image, token);
+               klass = mono_class_get (image, MONO_TOKEN_TYPE_DEF | type);
+       }
        
        result->slot = -1;
        result->klass = klass;
@@ -1148,9 +1153,7 @@
        result->token = token;
        result->name = mono_metadata_string_heap (image, cols [3]);
 
-       if (klass)
-               container = klass->generic_container;
-
+       container = klass->generic_container;
        generic_container = mono_metadata_load_generic_params (image, token, 
container);
        if (generic_container) {
                mono_metadata_load_generic_param_constraints (image, token, 
generic_container);
@@ -1188,11 +1191,6 @@
                        result->signature->pinvoke = 1;
        }
 
-       if (!result->klass) {
-               guint32 type = mono_metadata_typedef_from_method (image, token);
-               result->klass = mono_class_get (image, MONO_TOKEN_TYPE_DEF | 
type);
-       }
-
        if (cols [1] & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
                if (result->klass == mono_defaults.string_class && !strcmp 
(result->name, ".ctor"))
                        result->string_ctor = 1;

Modified: trunk/mono/mono/metadata/metadata.c
===================================================================
--- trunk/mono/mono/metadata/metadata.c 2005-11-28 08:03:07 UTC (rev 53541)
+++ trunk/mono/mono/metadata/metadata.c 2005-11-28 09:52:05 UTC (rev 53542)
@@ -1824,7 +1824,9 @@
        gtype = mono_metadata_parse_type_full (m, generic_context, 
MONO_PARSE_TYPE, 0, ptr, &ptr);
        gclass->container_class = gklass = mono_class_from_mono_type (gtype);
 
-       g_assert ((gclass->context->container = gklass->generic_container) != 
NULL);
+       g_assert (gklass->generic_container);
+       gclass->context->container = gklass->generic_container;
+
        count = mono_metadata_decode_value (ptr, &ptr);
 
        gclass->inst = mono_metadata_parse_generic_inst (m, generic_context, 
count, ptr, &ptr);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to