Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

45 lines
825 B
C#

using System;
using System.Runtime.InteropServices;
public class Test {
[StructLayout (LayoutKind.Sequential)]
public struct BlittableStruct {
public int a;
public int b;
}
public unsafe static int Main () {
BlittableStruct ss = new BlittableStruct ();
int size = Marshal.SizeOf (typeof (BlittableStruct));
Console.WriteLine ("BlittableStruct:" + size);
if (size != 8)
return 1;
IntPtr p = Marshal.AllocHGlobal (size);
ss.a = 123;
ss.b = 124;
Marshal.StructureToPtr (ss, p, false);
Type t = ss.GetType ();
if (Marshal.ReadInt32 (p, 0) != 123)
return 1;
if (Marshal.ReadInt32 (p, 4) != 124)
return 1;
BlittableStruct cp = (BlittableStruct)Marshal.PtrToStructure (p, ss.GetType ());
if (cp.a != 123)
return 2;
if (cp.b != 124)
return 2;
return 0;
}
}