Example #1
0
        private string GetUnicodeUsingOS(string ascii)
        {
            uint dwFlags = (this.AllowUnassigned ? 1U : 0U) | (this.UseStd3AsciiRules ? 2U : 0U);
            int  num     = IdnMapping.IdnToUnicode(dwFlags, ascii, ascii.Length, null, 0);

            if (num == 0)
            {
                int lastWin32Error = Marshal.GetLastWin32Error();
                if (lastWin32Error == 123)
                {
                    throw new ArgumentException(Environment.GetResourceString("Argument_IdnIllegalName"), "ascii");
                }
                throw new ArgumentException(Environment.GetResourceString("Argument_IdnBadPunycode"), "ascii");
            }
            else
            {
                char[] array = new char[num];
                num = IdnMapping.IdnToUnicode(dwFlags, ascii, ascii.Length, array, num);
                if (num != 0)
                {
                    return(new string(array, 0, num));
                }
                int lastWin32Error = Marshal.GetLastWin32Error();
                if (lastWin32Error == 123)
                {
                    throw new ArgumentException(Environment.GetResourceString("Argument_IdnIllegalName"), "ascii");
                }
                throw new ArgumentException(Environment.GetResourceString("Argument_IdnBadPunycode"), "ascii");
            }
        }
Example #2
0
        private string GetUnicodeUsingOS(string ascii)
        {
            int    num             = (this.AllowUnassigned ? 1 : 0) | (this.UseStd3AsciiRules ? 2 : 0);
            string lpASCIICharStr1 = ascii;
            int    length1         = lpASCIICharStr1.Length;
            // ISSUE: variable of the null type
            __Null local           = null;
            int    cchUnicodeChar1 = 0;
            int    unicode1        = IdnMapping.IdnToUnicode((uint)num, lpASCIICharStr1, length1, (char[])local, cchUnicodeChar1);

            if (unicode1 == 0)
            {
                if (Marshal.GetLastWin32Error() == 123)
                {
                    throw new ArgumentException(Environment.GetResourceString("Argument_IdnIllegalName"), "ascii");
                }
                throw new ArgumentException(Environment.GetResourceString("Argument_IdnBadPunycode"), "ascii");
            }
            char[] chArray         = new char[unicode1];
            string lpASCIICharStr2 = ascii;
            int    length2         = lpASCIICharStr2.Length;

            char[] lpUnicodeCharStr = chArray;
            int    cchUnicodeChar2  = unicode1;
            int    unicode2         = IdnMapping.IdnToUnicode((uint)num, lpASCIICharStr2, length2, lpUnicodeCharStr, cchUnicodeChar2);

            if (unicode2 != 0)
            {
                return(new string(chArray, 0, unicode2));
            }
            if (Marshal.GetLastWin32Error() == 123)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_IdnIllegalName"), "ascii");
            }
            throw new ArgumentException(Environment.GetResourceString("Argument_IdnBadPunycode"), "ascii");
        }