1. Куча / Говнокод #17662

    +130

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Subroutine HBomb(x,ia,ib)
          Dimension x(*)
    c  Generate some exeption...
          x(ia*ib)=1.0
          x(ia*(-ib))=1.0
          x(1)=7.0/(ia+ib)
          Return
          End

    Серьёзный квантовохимический пакет, между прочим.

    Выше по течению этот кусок кода вызывали через call hbomb(x, 1000, -1000)

    Запостил: dxd, 18 Февраля 2015

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

    • В чем логика вообще? "Если нам передали не нули, то мы вызовем обращение к отрицательному индексу (или к отрицательным можно? Тогда вся надежда только на переполнение памяти), а если нули - деление на нуль"? И потом в одних местах передавать нули, а в других не нули и по перфоленте возникшему исключению отлаживать?
      Ответить
      • 7.0 / (ia+ib) даст деление на ноль
        Ответить
      • Эта штука должна уронить всю программу в core. Авторы дважды пытаются получить сегфолт, используя для этого какие-то параметры, после чего сдаются и пытаются неявно поделить на ноль. Какой abort(), о чём вы вообще?
        Ответить
        • почему-то вспомнились бухи, которые сами начинают что-то писать в 1С
          Ответить
    • Парадокс: почти весь серьезный профессиональный софт -- дерьмо по программной части.
      Ответить
      • Причем чем дольше он живёт - тем больше там этого дерьма и тем сильнее оно каменеет от обратной совместимости...

        В общем-то парадоксов тут нет. Только горькая правда.
        Ответить
      • Это не парадокс, это закономерность. Поставить кирпич на кирпич любой может, а построить башню в 100500 кирпичей без подпорок, раствора и хитровыебанных костылей....
        Ответить
        • При условии, что каждый месяц просят что-нибудь в духе нового этажа сверху, пары новых квартир на десятом, а на первом сломать стенку между сортиром и ванной...
          Ответить
    • Переведи на "PHP".
      Ответить

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