[Mono-bugs] [Bug 647267] New: Wrong Size of a Struct with Marshal Sizeof

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Oct 17 16:34:53 EDT 2010



           Summary: Wrong Size of a Struct with Marshal Sizeof
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 1.2.0
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: jochen.kuehner at gmx.de
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3

i use the following struct:

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
        private struct FieldDescriptor
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
            public string fieldName;
            public char fieldType;  //turn this to byte, then it works
            public Int32 address;
            public byte fieldLen;
            public byte count;
            public Int16 reserved1;
            public byte workArea;
            public Int16 reserved2;
            public byte flag;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
            public byte[] reserved3;
            public byte indexFlag;

and this code to read it:
buffer = br.ReadBytes(Marshal.SizeOf(typeof(FieldDescriptor)));

with dotnet framework the buffer is 32 bytes, with mono it's 33!

when i turn the char to a byte, than it works!

Reproducible: Always

Steps to Reproduce:

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list