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