Author: zoltan
Date: 2008-02-05 10:46:59 -0500 (Tue, 05 Feb 2008)
New Revision: 94896

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/marshal.c
Log:
2008-02-05  Zoltan Varga  <[EMAIL PROTECTED]>

        * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature 
non-pinvoke.
        (mono_marshal_get_struct_to_ptr): Ditto.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2008-02-05 15:35:53 UTC (rev 94895)
+++ trunk/mono/mono/metadata/ChangeLog  2008-02-05 15:46:59 UTC (rev 94896)
@@ -1,5 +1,8 @@
 2008-02-05  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature 
non-pinvoke.
+       (mono_marshal_get_struct_to_ptr): Ditto.
+
        * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
        cctor_signature.
 

Modified: trunk/mono/mono/metadata/marshal.c
===================================================================
--- trunk/mono/mono/metadata/marshal.c  2008-02-05 15:35:53 UTC (rev 94895)
+++ trunk/mono/mono/metadata/marshal.c  2008-02-05 15:46:59 UTC (rev 94896)
@@ -9145,7 +9145,7 @@
 
        mono_mb_emit_byte (mb, CEE_RET);
 
-       res = mono_mb_create_method (mb, mono_method_signature (stoptr), 0);
+       res = mono_mb_create_method (mb, signature_no_pinvoke (stoptr), 0);
        mono_mb_free (mb);
 
        klass->marshal_info->str_to_ptr = res;
@@ -9172,11 +9172,18 @@
        if (klass->marshal_info->ptr_to_str)
                return klass->marshal_info->ptr_to_str;
 
-       if (!ptostr)
+       if (!ptostr) {
+               MonoMethodSignature *sig;
+
                /* Create the signature corresponding to
                          static void PtrToStructure (IntPtr ptr, object 
structure);
                   defined in 
class/corlib/System.Runtime.InteropServices/Marshal.cs */
-               ptostr = mono_create_icall_signature ("void ptr object");
+               sig = mono_create_icall_signature ("void ptr object");
+               sig = signature_dup (mono_defaults.corlib, sig);
+               sig->pinvoke = 0;
+               mono_memory_barrier ();
+               ptostr = sig;
+       }
 
        mb = mono_mb_new (klass, "PtrToStructure", MONO_WRAPPER_UNKNOWN);
 

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

Reply via email to