1. C# / Говнокод #2506

    +103.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static IntPtr StringToBSTR(string s)
    {
        //...
        if ((s.Length + 1) < s.Length)
        {
            throw new ArgumentOutOfRangeException("s");
        }
        //...
    }

    System.Runtime.InteropServices.Marshal Не знаю зачем это, но мне показалось смешным.

    Запостил: psina-from-ua, 30 Января 2010

    Комментарии (9) RSS

    • индусам платят за количество строк. //КО
      Ответить
    • Голь на выдумки хиттра
      Ответить
    • Код, кстати, из .NET Framework, а именно из System.Runtime.InteropServices.Marsha.St ringToBSTR
      Ответить
    • Не понял, это проверка на переполнение переменной чтоли?
      Ответить
      • Видимо так. Только зачем она нужна, если в BSTR всё равно только 1 байт под длину строки отводится (а размер s.length заведомо больше 1 байта).
        Ответить
      • Она самая. BSTR всегда хранится с нулем в конце. Тут проверяется, влезет длина строки в максимальный положительный int или нет. Проверка странная, но вполне рабочая.
        Ответить
        • Непонятно, правда, кто им мешал просто откастить длину строки в uint. В BSTR оно бы влезло. Разве что, там inplace преобразование.
          Ответить

    Добавить комментарий