1. PHP / Говнокод #8795

    +170

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function draw_text() {
    // ***
    // Здесь код, генерирующий изображение для текста капчи
    // $im_text - это его дескриптор
    // Но самое интересное в конце ))
    // ***
    return $im_text;
    imagedestroy($im_text); 
    }

    MODx Evolution 1.0.5, фрагмент кода, отвечающего за генерацию капчи

    Запостил: shlyapa, 11 Декабря 2011

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

    • судя по частоте такого подхода, должно автоматически вставляться finally
      Ответить
    • сумасшедшая логика
      Ответить
      • Логика как логика. Сначала вернуть, а потом уничтожить. С точки зрения человека, который к языкам программирования отношения не имеет - все совершенно логично.
        Ответить
        • наоборот - уничтожить и вернуть - было бы намного фееричнее = )
          Ответить
        • Даже захотелось придумать для такой записи осмысленную функциональность. Что-нибудь типа finally, что ли...
          Ответить
    • А что, ошибки unreachable code не будет?
      Ответить
    • Забавно то, что в этом скрипте есть специальная функция, уничтожающая использованные изображения. Но вышеприведенного вызова в ней нет) Походу, разработчик просто не туда его положил и так и забыл))
      Ответить
      • Может быть в редакторе мышкой случайно перетащил?
        Ответить
        • В принципе тут все гораздо хуже... Переменная $im_text нигде не сохраняется, она сразу передается в другую функцию. Поэтому до функции уничтожения картинок она просто не доживает. Скорее всего, у автора кода сработала какая-то инерция мышления, и он подумал, что при return'е imagedestroy вызовется автоматически)))))
          Ответить
    • показать все, что скрытоvanished
      Ответить

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