/
bug-340662_bug.cs
44 lines (34 loc) · 1.42 KB
/
bug-340662_bug.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
class Program
{
[DllImport("foo.dll", CallingConvention=CallingConvention.Winapi)]
public static extern void pf1(string format, __arglist);
[DllImport("foo.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern void pf2(string format, __arglist);
[DllImport("foo.dll", CallingConvention=CallingConvention.StdCall)]
public static extern void pf3(string format, __arglist);
[DllImport("foo.dll", CallingConvention=CallingConvention.ThisCall)]
public static extern void pf4(string format, __arglist);
[DllImport("foo.dll", CallingConvention=CallingConvention.FastCall)]
public static extern void pf5(string format, __arglist);
[DllImport("foo.dll", CallingConvention=CallingConvention.StdCall)]
public static extern void mixed1(string format);
static int Main()
{
for (int i = 1; i < 6; ++i) {
if (typeof (Program).GetMethod ("pf"+i).CallingConvention != CallingConventions.VarArgs) {
Console.WriteLine ("pf{0} {1} != VarArg", i, typeof (Program).GetMethod ("pf"+i).CallingConvention);
return 1;
}
}
if (typeof (Program).GetMethod ("mixed1").CallingConvention != CallingConventions.Standard) {
Console.WriteLine ("mixed1 {0} != Standard", typeof (Program).GetMethod ("mixed1").CallingConvention);
return 1;
}
Console.WriteLine ("OK");
return 0;
}
}