예제 #1
0
        static int TestS4_Corrupted4()
        {
            S4 s1 = new S4();

            s1.i = 0x1010101;
            S4Corrupted3 s2 = new S4Corrupted3();

            s2 = Unsafe.As <S4, S4Corrupted3>(ref s1);
            S4Corrupted3 s3 = s2;

            s2.b0 = 0;
            s3.b1 = 1;

            s1 = Unsafe.As <S4Corrupted3, S4>(ref s3);
            if (s1.i != 0x01010101)
            {
                return(101);
            }
            if (s2.b0 != 0)
            {
                return(101);
            }

            return(100);
        }
예제 #2
0
        static int TestS4_Corrupted3()
        {
            S4           s1 = new S4();
            S4Corrupted3 s2 = new S4Corrupted3();

            s2.b0 = 1;
            if (s1.i != 0)
            {
                return(101);
            }
            s1    = Unsafe.As <S4Corrupted3, S4>(ref s2);
            s2.b0 = 2;
            if (s1.i != 1)
            {
                return(101);
            }
            if (s2.b0 != 2)
            {
                return(101);
            }

            s2.b1 = 1;
            s1    = Unsafe.As <S4Corrupted3, S4>(ref s2);
            if (s1.i != 16777218)
            {
                return(101);
            }
            if (s2.b0 != 2)
            {
                return(101);
            }

            return(100);
        }