[Mono-bugs] [Bug 77230][Nor] New - Marshalling C unions not working anymore

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu Jan 12 14:28:07 EST 2006

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by maurits.rijk at philips.com.


--- shadow/77230	2006-01-12 14:28:07.000000000 -0500
+++ shadow/77230.tmp.14928	2006-01-12 14:28:07.000000000 -0500
@@ -0,0 +1,42 @@
+Bug#: 77230
+Product: Mono: Runtime
+Version: 1.1
+OS Details: 
+Status: NEW   
+Priority: Normal
+Component: interop
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: maurits.rijk at philips.com               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+Summary: Marshalling C unions not working anymore
+Until mono 1.1.12 I was able to marshal C unions by using a struct with an
+explicit layout and all the field offsets set to zero, as shown in the
+following piece of code:
+  [StructLayout(LayoutKind.Explicit)]
+    public struct ParamData
+    {
+      [FieldOffset(0)]
+      public Int32	d_int32;
+      [FieldOffset(0)]
+      public Int16	d_int16;
+      [FieldOffset(0)]
+      public byte	d_int8;
+    }
+However in mono 1.1.13 this doesn't work anymore. The compiler doesn't
+complain, but at runtime I always get the follow error:
+** ERROR **: Type Gimp.ParamData which has an [ExplicitLayout] attribute
+cannot have two fields with the same offset.
+On win32 with .NET 2.0 I don't get this error.
+I will try to come up with a small example if needed.

More information about the mono-bugs mailing list