Author: gonzalo
Date: 2006-02-28 16:27:06 -0500 (Tue, 28 Feb 2006)
New Revision: 57432

Modified:
   branches/mono-1-1-13/mono/mono/metadata/ChangeLog
   branches/mono-1-1-13/mono/mono/metadata/class.c
   branches/mono-1-1-13/mono/mono/metadata/marshal.c
Log:
r57039,57238 from HEAD

Modified: branches/mono-1-1-13/mono/mono/metadata/ChangeLog
===================================================================
--- branches/mono-1-1-13/mono/mono/metadata/ChangeLog   2006-02-28 21:23:03 UTC 
(rev 57431)
+++ branches/mono-1-1-13/mono/mono/metadata/ChangeLog   2006-02-28 21:27:06 UTC 
(rev 57432)
@@ -1,5 +1,17 @@
+2006-02-24  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * marshal.c (mono_marshal_free_asany): Fix handling of blittable
+       formatted classes. Fixes #77524.
+
 2006-02-18  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * class.c (mono_class_get_exception_for_failure): Fix a warning.
+
+       * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
+       return values. Fixes #77581.
+
+       * class.c (mono_fnptr_class_get): Switch name and name_space.
+
        * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
        classes and add support for [In, Out] attributes.
        (mono_marshal_free_asany): Ditto. Fixes #77524.

Modified: branches/mono-1-1-13/mono/mono/metadata/class.c
===================================================================
--- branches/mono-1-1-13/mono/mono/metadata/class.c     2006-02-28 21:23:03 UTC 
(rev 57431)
+++ branches/mono-1-1-13/mono/mono/metadata/class.c     2006-02-28 21:27:06 UTC 
(rev 57432)
@@ -32,6 +32,7 @@
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/reflection.h>
+#include <mono/metadata/exception.h>
 #include <mono/metadata/security-manager.h>
 #include <mono/os/gc_wrapper.h>
 
@@ -3016,8 +3017,8 @@
        result = g_new0 (MonoClass, 1);
 
        result->parent = NULL; /* no parent for PTR types */
-       result->name = "System";
-       result->name_space = "MonoFNPtrFakeClass";
+       result->name_space = "System";
+       result->name = "MonoFNPtrFakeClass";
        result->image = NULL; /* need to fix... */
        result->inited = TRUE;
        result->flags = TYPE_ATTRIBUTE_CLASS; /* | (el_class->flags & 
TYPE_ATTRIBUTE_VISIBILITY_MASK); */

Modified: branches/mono-1-1-13/mono/mono/metadata/marshal.c
===================================================================
--- branches/mono-1-1-13/mono/mono/metadata/marshal.c   2006-02-28 21:23:03 UTC 
(rev 57431)
+++ branches/mono-1-1-13/mono/mono/metadata/marshal.c   2006-02-28 21:27:06 UTC 
(rev 57432)
@@ -6240,6 +6240,7 @@
                        case MONO_TYPE_R8:
                        case MONO_TYPE_I8:
                        case MONO_TYPE_U8:
+                       case MONO_TYPE_FNPTR:
                                mono_mb_emit_ldarg (mb, argnum);
                                break;
                        case MONO_TYPE_VALUETYPE:
@@ -6263,7 +6264,6 @@
                                mono_mb_emit_ldarg (mb, argnum);
                                break;
                        case MONO_TYPE_TYPEDBYREF:
-                       case MONO_TYPE_FNPTR:
                        default:
                                g_warning ("type 0x%02x unknown", t->type);     
                                g_assert_not_reached ();
@@ -6311,6 +6311,7 @@
                        case MONO_TYPE_R8:
                        case MONO_TYPE_I8:
                        case MONO_TYPE_U8:
+                       case MONO_TYPE_FNPTR:
                                /* no conversions necessary */
                                mono_mb_emit_stloc (mb, 3);
                                break;
@@ -6335,7 +6336,6 @@
                                mono_mb_emit_stloc (mb, 3);
                                break;
                        case MONO_TYPE_TYPEDBYREF:
-                       case MONO_TYPE_FNPTR:
                        default:
                                g_warning ("return type 0x%02x unknown", 
sig->ret->type);       
                                g_assert_not_reached ();
@@ -8513,8 +8513,8 @@
        case MONO_TYPE_VALUETYPE: {
                klass = t->data.klass;
 
-               if (((klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == 
TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) ||
-                       klass->blittable || klass->enumtype)
+               if (klass->valuetype && (((klass->flags & 
TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) ||
+                                                                
klass->blittable || klass->enumtype))
                        break;
 
                if (param_attrs & PARAM_ATTRIBUTE_OUT) {

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

Reply via email to