Author: ankit
Date: 2005-11-16 08:28:47 -0500 (Wed, 16 Nov 2005)
New Revision: 53112

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/class.c
   trunk/mono/mono/metadata/metadata.c
Log:
* class.c (my_mono_class_from_generic_parameter): param->owner can be null.
* metadata.c (mono_metadata_parse_generic_param): Create a dummy 
MonoGenericParam 
if generic_context is null.
  (mono_metadata_generic_param_equal): param->owner can be null.
  (mono_type_create_from_typespec_full): Don't cache the MonoType if 
param->owner is
null.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2005-11-16 13:23:12 UTC (rev 53111)
+++ trunk/mono/mono/metadata/ChangeLog  2005-11-16 13:28:47 UTC (rev 53112)
@@ -1,3 +1,12 @@
+2005-11-16  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * class.c (my_mono_class_from_generic_parameter): param->owner can be 
null.
+       * metadata.c (mono_metadata_parse_generic_param): Create a dummy 
MonoGenericParam 
+       if generic_context is null.
+         (mono_metadata_generic_param_equal): param->owner can be null.
+         (mono_type_create_from_typespec_full): Don't cache the MonoType if 
param->owner is
+       null.
+
 2005-11-16  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * reflection.c (create_dynamic_mono_image): Set md_version_minor to

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2005-11-16 13:23:12 UTC (rev 53111)
+++ trunk/mono/mono/metadata/class.c    2005-11-16 13:28:47 UTC (rev 53112)
@@ -2852,8 +2852,6 @@
        if (param->pklass)
                return param->pklass;
 
-       g_assert (param->owner);
-
        klass = g_new0 (MonoClass, 1);
 
        if (param->name)

Modified: trunk/mono/mono/metadata/metadata.c
===================================================================
--- trunk/mono/mono/metadata/metadata.c 2005-11-16 13:23:12 UTC (rev 53111)
+++ trunk/mono/mono/metadata/metadata.c 2005-11-16 13:28:47 UTC (rev 53112)
@@ -1880,7 +1880,14 @@
        if (rptr)
                *rptr = ptr;
 
-       g_assert (generic_context);
+       if (!generic_context) {
+               /* Create dummy MonoGenericParam */
+               MonoGenericParam *param = g_new0 (MonoGenericParam, 1);
+               param->name = g_strdup_printf ("%d", index);
+               param->num = index;
+
+               return param;
+       }
        generic_container = generic_context->container;
 
        if (!is_mvar) {
@@ -3138,7 +3145,6 @@
        if (p1->num != p2->num)
                return FALSE;
 
-       g_assert (p1->owner && p2->owner);
        if (p1->owner == p2->owner)
                return TRUE;
 
@@ -3743,7 +3749,7 @@
 
        do_mono_metadata_parse_type (type, image, generic_context, ptr, &ptr);
 
-       if (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) {
+       if ((type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && 
type->data.generic_param->owner) {
                MonoGenericContainer *container;
 
                g_assert (type->data.generic_param->owner);

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

Reply via email to