Author: jbevain
Date: 2007-08-24 06:36:22 -0400 (Fri, 24 Aug 2007)
New Revision: 84794

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/class.c
Log:
2007-08-24  Jb Evain  <[EMAIL PROTECTED]>

        * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
        for byref types.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-08-24 10:31:15 UTC (rev 84793)
+++ trunk/mono/mono/metadata/ChangeLog  2007-08-24 10:36:22 UTC (rev 84794)
@@ -1,3 +1,8 @@
+2007-08-24  Jb Evain  <[EMAIL PROTECTED]>
+
+       * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
+       for byref types.
+
 2007-08-24  Mark Probst  <[EMAIL PROTECTED]>
 
        * threads.c: Make sure a thread gets cleaned up only once.  Fixes

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2007-08-24 10:31:15 UTC (rev 84793)
+++ trunk/mono/mono/metadata/class.c    2007-08-24 10:36:22 UTC (rev 84794)
@@ -187,6 +187,13 @@
                ta->aname.public_key_token [0] ? (char 
*)ta->aname.public_key_token : "null");
 }
 
+static inline void
+mono_type_name_check_byref (MonoType *type, GString *str)
+{
+       if (type->byref)
+               g_string_append_c (str, '&');
+}
+
 static void
 mono_type_get_name_recurse (MonoType *type, GString *str, gboolean is_recursed,
                            MonoTypeNameFormat format)
@@ -209,6 +216,9 @@
                for (i = 1; i < rank; i++)
                        g_string_append_c (str, ',');
                g_string_append_c (str, ']');
+               
+               mono_type_name_check_byref (type, str);
+
                if (format == MONO_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED)
                        _mono_type_get_assembly_name (type->data.array->eklass, 
str);
                break;
@@ -222,6 +232,9 @@
                mono_type_get_name_recurse (
                        &type->data.klass->byval_arg, str, FALSE, 
nested_format);
                g_string_append (str, "[]");
+               
+               mono_type_name_check_byref (type, str);
+
                if (format == MONO_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED)
                        _mono_type_get_assembly_name (type->data.klass, str);
                break;
@@ -235,6 +248,9 @@
                mono_type_get_name_recurse (
                        type->data.type, str, FALSE, nested_format);
                g_string_append_c (str, '*');
+
+               mono_type_name_check_byref (type, str);
+
                if (format == MONO_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED)
                        _mono_type_get_assembly_name (mono_class_from_mono_type 
(type->data.type), str);
                break;
@@ -243,6 +259,9 @@
        case MONO_TYPE_MVAR:
                g_assert (type->data.generic_param->name);
                g_string_append (str, type->data.generic_param->name);
+       
+               mono_type_name_check_byref (type, str);
+
                break;
        default:
                klass = mono_class_from_mono_type (type);
@@ -315,6 +334,9 @@
                        else
                                g_string_append_c (str, ']');
                }
+
+               mono_type_name_check_byref (type, str);
+
                if ((format == MONO_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED) &&
                    (type->type != MONO_TYPE_VAR) && (type->type != 
MONO_TYPE_MVAR))
                        _mono_type_get_assembly_name (klass, str);
@@ -350,9 +372,6 @@
 
        mono_type_get_name_recurse (type, result, FALSE, format);
 
-       if (type->byref)
-               g_string_append_c (result, '&');
-
        return g_string_free (result, FALSE);
 }
 

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

Reply via email to