1. Си / Говнокод #19177

    −94

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(Validate_Value((void *)pchStream, "st::r:[0\\-9]+:", &bValid) == ERR_NONE)
    {
        if(bValid) 
        {
            (void)sscanf(pchStream, "%hd", pusTextID);
        }

    из встроенщины медицинской. проверяем валидность числа регулярками. а вы думали такое только в пыхе...

    Запостил: Dummy00001, 14 Декабря 2015

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

    • Небось сертификацию софт прошел, исходники куда-нибудь отправляли или как там это делается.
      Ответить
      • официально - да.

        но подкол в том что сертифицируют те же люди что и пишут. клиент зааутсорсил все одному подрядчику.
        Ответить
        • потом удивляются чего у нас спутники падают.
          Ответить
    • А не легче:
      if (sscanf(buf, "%hd", &number) != 1) 
          return ERR_INPUT;
      Ответить
      • нет. правильней будет `strtol()` + проверка `endptr` что были все символы обработаны.
        Ответить
        • Он ещё, ЕМНИП, выставляет errno при переполнении.
          Ответить
    • А зачем там приведение к void?
      Ответить
      • Давит ворнинг про неиспользуемый результат.
        Ответить
        • В студии на w4 такого варнинга нет, это где такой?
          Ответить
          • В GCC такой есть и включен по дефолту, но но только если функция помечена атрибутом warn_unused_result и только когда компиляешь с оптимизацией.
            Ответить
            • некоторые типа меня еще пользуются этим (вместо комментария) для того что бы в коде пометить что возвращаемое значение пофиг.
              Ответить
              • Они только как комментарий и могут работать - эти касты никак не влияют на ворнинги.
                Ответить
                • это древняя практика еще с тех времен когда компилеры таких ворнингов не умели делать.
                  Ответить

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