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