19234507ba
Former-commit-id: 3494343bcc9ddb42b36b82dd9ae7b69e85e0229f
54 lines
759 B
C#
54 lines
759 B
C#
// Compiler options: -unsafe
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Linq;
|
|
|
|
unsafe class Program
|
|
{
|
|
public static void Test ()
|
|
{
|
|
string s = "";
|
|
unsafe {
|
|
fixed (char *chars = s) {
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool StringNull (string s)
|
|
{
|
|
unsafe {
|
|
fixed (char *a = s) {
|
|
return a == null;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool ArrayNull (int[] a)
|
|
{
|
|
unsafe {
|
|
fixed (int *e = a) {
|
|
return e == null;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static int Main ()
|
|
{
|
|
Test ();
|
|
|
|
var m = typeof (Program).GetMethod ("Test");
|
|
var lv = m.GetMethodBody ().LocalVariables.Where (l => l.LocalType == typeof (char*)).Single ();
|
|
if (lv.IsPinned)
|
|
return 1;
|
|
|
|
if (!StringNull (null))
|
|
return 1;
|
|
|
|
if (!ArrayNull (null))
|
|
return 2;
|
|
|
|
return 0;
|
|
}
|
|
}
|