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 [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=77230 --- shadow/77230 2006-01-13 03:43:47.000000000 -0500 +++ shadow/77230.tmp.4785 2006-01-17 16:28:02.000000000 -0500 @@ -77,6 +77,54 @@ The union I'm trying to marshall is more complicated than the part I've shown above. Robert: I will use your code as starting point and try to come up with a minimal example that doesn't work anymore. My actual code has to marshal an array of structs, where each of this struct contains a more complicated version of the union shown above. + +------- Additional Comments From [EMAIL PROTECTED] 2006-01-17 16:28 ------- +A bit more info (still no working testcase): the code fails in a call to + +Marshal.PtrToStructure(paramPtr, typeof(GimpParam)); + +where paramPtr is an IntPtr and GimpParam is defined as: + + [StructLayout(LayoutKind.Sequential)] + public struct GimpParam + { + public PDBArgType type; + public ParamData data; + }; + +PDBArgtype is an enum, while ParamData is defined as: + + [StructLayout(LayoutKind.Explicit)] + public struct ParamData + { + [FieldOffset(0)] + public Int32 d_int32; + [FieldOffset(0)] + public Int16 d_int16; + [FieldOffset(0)] + public byte d_int8; + [FieldOffset(0)] + public double d_float; + [FieldOffset(0)] + public IntPtr d_string; + [FieldOffset(0)] + public GimpRGB d_color; + [FieldOffset(0)] + public Int32 d_image; + [FieldOffset(0)] + public Int32 d_drawable; + [FieldOffset(0)] + public PDBStatusType d_status; + }; + +and + + [StructLayout(LayoutKind.Sequential)] + public struct GimpRGB + { + public double r, g, b, a; + } + _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
