Author: zoltan
Date: 2005-05-12 09:09:26 -0400 (Thu, 12 May 2005)
New Revision: 44436

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

        * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
        conversion in structures. Fixes #74882.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2005-05-12 12:27:17 UTC (rev 44435)
+++ trunk/mono/mono/metadata/ChangeLog  2005-05-12 13:09:26 UTC (rev 44436)
@@ -1,3 +1,8 @@
+2005-05-12  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
+       conversion in structures. Fixes #74882.
+
 2005-05-12  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * culture-info-table.h : zh-* cultures were missing.

Modified: trunk/mono/mono/metadata/marshal.c
===================================================================
--- trunk/mono/mono/metadata/marshal.c  2005-05-12 12:27:17 UTC (rev 44435)
+++ trunk/mono/mono/metadata/marshal.c  2005-05-12 13:09:26 UTC (rev 44436)
@@ -1070,9 +1070,16 @@
                break;
        }
        case MONO_MARSHAL_CONV_DEL_FTN: {
-               /* fixme: we never convert functions back to delegates, dont 
-               // know if thats the correct behaviour
-               */
+               MonoClass *klass = mono_class_from_mono_type (type);
+
+               mono_mb_emit_byte (mb, CEE_LDLOC_1);
+               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+               mono_mb_emit_byte (mb, CEE_MONO_CLASSCONST);
+               mono_mb_emit_i4 (mb, mono_mb_add_data (mb, klass));
+               mono_mb_emit_byte (mb, CEE_LDLOC_0);
+               mono_mb_emit_byte (mb, CEE_LDIND_I);
+               mono_mb_emit_icall (mb, mono_ftnptr_to_delegate);
+               mono_mb_emit_byte (mb, CEE_STIND_I);
                break;
        }
        case MONO_MARSHAL_CONV_ARRAY_LPARRAY:

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

Reply via email to