Author: zoltan
Date: 2005-11-06 15:44:52 -0500 (Sun, 06 Nov 2005)
New Revision: 52632
Modified:
trunk/mono/mono/metadata/marshal.c
Log:
2005-11-06 Zoltan Varga <[EMAIL PROTECTED]>
* marshal.c (mono_marshal_get_ptr_to_struct): Do not treat the
explicit layout case the same as the blittable case. Fixes #76626.
Modified: trunk/mono/mono/metadata/marshal.c
===================================================================
--- trunk/mono/mono/metadata/marshal.c 2005-11-06 20:43:28 UTC (rev 52631)
+++ trunk/mono/mono/metadata/marshal.c 2005-11-06 20:44:52 UTC (rev 52632)
@@ -7096,21 +7096,15 @@
if (klass->marshal_info->ptr_to_str)
return klass->marshal_info->ptr_to_str;
- if (!ptostr) {
+ if (!ptostr)
/* Create the signature corresponding to
static void PtrToStructure (IntPtr ptr, object
structure);
defined in
class/corlib/System.Runtime.InteropServices/Marshal.cs */
- ptostr = mono_metadata_signature_alloc (klass->image, 2);
- ptostr->pinvoke = 1;
- ptostr->ret = &mono_defaults.void_class->byval_arg;
- ptostr->params [0] = &mono_defaults.int_class->byval_arg;
- ptostr->params [1] = &mono_defaults.object_class->byval_arg;
- }
- g_assert (ptostr);
+ ptostr = mono_create_icall_signature ("void ptr object");
mb = mono_mb_new (klass, "PtrToStructure", MONO_WRAPPER_UNKNOWN);
- if (((klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) ==
TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) || klass->blittable) {
+ if (klass->blittable) {
mono_mb_emit_byte (mb, CEE_LDARG_1);
mono_mb_emit_ldflda (mb, sizeof (MonoObject));
mono_mb_emit_byte (mb, CEE_LDARG_0);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches